单元测试 – 自动混合和WebApi控制器
我正在使用AutoFixture来测试我的控制器以获取WebApi站点.我正在使用Moq的AutoData功能,如
Ploeh’s blog所述.
我的控制器在构造函数中使用IDepartmentManager.这是我的测试: [Theory,AutoMoqData] public void GetCallsManagerCorrectly( [Frozen]Mock<IDepartmentManager> departmentManagerMock,DepartmentsController sut) { // Fixture setup // Exercise system sut.Get(); // Verify outcome departmentManagerMock.Verify(d => d.GetAllDepartments(),Times.Exactly(1)); // Teardown } 当我运行此测试时,它失败并出现以下情况:
首先,这仍然是编写这些测试的有效和推荐方法吗?我喜欢它制作一切的小. 其次,我该怎么做才能解决这个问题?如果我将测试更改为: [Theory,AutoMoqData] public void GetCallsManagerCorrectly( [Frozen]Mock<IDepartmentManager> departmentManagerMock) { // Fixture setup DepartmentsController sut = new DepartmentsController(departmentManagerMock.Object); // Exercise system sut.Get(); // Verify outcome departmentManagerMock.Verify(d => d.GetAllDepartments(),Times.Exactly(1)); // Teardown } 它通过,但后来我失去了自动构建控制器的能力,如果我向构造函数添加参数仍然可以. 解决方法
这绝对是使用AutoFixture编写测试的推荐方法.这个问题很容易解决.
我不建议实现博客文章中描述的[AutoMoqData]属性,而是建议创建一个稍微不同的属性和自定义 – 一个基本上将作为整个单元测试项目的一组约定的集合.我总是这样做,而且我总是竭尽全力为单个单元测试项目只有一套约定.一组约定可以帮助我保持测试(和SUTs)的一致性. public class AutoMyWebApiDataAttribute : AutoDataAttribute { public AutoMyWebApiDataAttribute() : base(new Fixture().Customize(new MyWebApiCustomization())) { } } MyWebApiCustomization可以像这样定义: public class MyWebApiCustomization : CompositeCustomization { public MyWebApiCustomization() : base( new HttpSchemeCustomization(),new AutoMoqCustomization(),) { } private class HttpSchemeCustomization : ICustomization { public void Customize(IFixture fixture) { fixture.Inject(new UriScheme("http")); } } } 注意额外的HttpSchemeCustomization类 – 应该这样做. 请注意0??7001. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 谈谈.NET Core中基于Generic Host来实现后台任务
- asp.net – 使用HttpRequestMessage.Properties传
- asp.net-mvc – ASP.NET MVC JavaScript路由
- asp.net – CSRF验证令牌:会话ID安全吗?
- asp.net-mvc – 如何设置AntiForgeryToken cooki
- asp.net-mvc-3 – Razor in-line if语句不工作?
- asp.net-mvc – 针对SAAS的多租户客户端特定定制
- 自动将ASP.NET FormView绑定到新插入的记录
- asp.net – URL长度的最佳限制是什么? 100,200
- asp.net – 有谁知道Razor,Spark和NVelocity视图