asp.net-mvc – 我应该为控制器或服务层或两者编写单元测试吗?
发布时间:2020-12-16 06:38:51 所属栏目:asp.Net 来源:网络整理
导读:我正在学习并尝试使用单元测试来完成我的项目.但是当我尝试使用单元测试编写演示时,我看到控制器的单元测试与服务层相同.下面是我为控制器和服务层编写的单元测试代码 控制器测试: private MockICountryService _countryServiceMock; CountryController obj
我正在学习并尝试使用单元测试来完成我的项目.但是当我尝试使用单元测试编写演示时,我看到控制器的单元测试与服务层相同.下面是我为控制器和服务层编写的单元测试代码
控制器测试: private Mock<ICountryService> _countryServiceMock; CountryController objController; List<Country> listCountry; [TestInitialize] public void Initialize() { _countryServiceMock = new Mock<ICountryService>(); objController = new CountryController(_countryServiceMock.Object); listCountry = new List<Country>() { new Country() { Id = 1,Name = "US" },new Country() { Id = 2,Name = "India" },new Country() { Id = 3,Name = "Russia" } }; } [TestMethod] public void Country_Get_All() { //Arrange _countryServiceMock.Setup(x => x.GetAll()).Returns(listCountry); //Act var result = ((objController.Index() as ViewResult).Model) as List<Country>; //Assert Assert.AreEqual(result.Count,3); Assert.AreEqual("US",result[0].Name); Assert.AreEqual("India",result[1].Name); Assert.AreEqual("Russia",result[2].Name); } 服务测试: private Mock<ICountryRepository> _mockRepository; private ICountryService _service; Mock<IUnitOfWork> _mockUnitWork; List<Country> listCountry; [TestInitialize] public void Initialize() { _mockRepository = new Mock<ICountryRepository>(); _mockUnitWork = new Mock<IUnitOfWork>(); _service = new CountryService(_mockUnitWork.Object,_mockRepository.Object); listCountry = new List<Country>() { new Country() { Id = 1,Name = "Russia" } }; } [TestMethod] public void Country_Get_All() { //Arrange _mockRepository.Setup(x => x.GetAll()).Returns(listCountry); //Act List<Country> results = _service.GetAll() as List<Country>; //Assert Assert.IsNotNull(results); Assert.AreEqual(3,results.Count); } 解决方法
在控制器级别,我倾向于编写端到端测试.没有嘲笑,没有假货,只有真实的东西.
原因是在上面的测试中,您的单元测试与控制器操作的实现细节相关联.假设您不再使用存储库或工作单元,您的测试将不再编译.在这个级别,您应该关注测试行为,而不是实现. 我单元测试隔离域模型,其余的集成测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net核心 – 在Visual Sudio 2015中的Aurelia项目设置和
- asp.net-mvc – IdentityDbContext vs Reb的DbContext
- asp.net – ashx处理程序DELETE请求不工作HTTP 405.0
- asp.net – 根据角色重定向到其他页面
- asp.net – 错误:“配置部分’system.webServer/managemen
- 在ASP.Net中访问HTML元素
- nunit – 单元测试时不会自动验证模型
- .net – Ninject的InRequestScope发生了什么事
- 流作为System.Net.Mail的附件是0字节
- asp.net-mvc – 如何在Ajax窗体的asp.net mvc中提交下拉列表
推荐文章
站长推荐
热点阅读