And*_*ree 0 c# asp.net-mvc unit-testing mocking asp.net-web-api
我对单元测试很陌生,我很挣扎.我想在ASP.NET MVC中创建WebAPI,测试项目包含控制器的测试方法.我已经阅读了很多关于IoC/DI的内容,我已经在其他项目中使用过它,但没有使用单元测试.作为IoC/DI的许多优点之一,经常会提到测试方法的模拟类注入,但我从来没有找到使用单独项目的方法.
那么我如何设置IoC/DI容器,使其包含生产类和模拟类,但当然模拟类不是与生产代码相互作用,而是单独定位并且只在测试项目中可见?
简短的回答,你没有.
每个应用程序都应该有自己的组合根.由于单元测试放在一个单独的项目中并在与WebApi项目分开的进程下运行,因此它们是单独的应用程序.因此,它们将具有单独的DI配置.所以简而言之,1个可执行进程== 1组合根.
DI是一种模式.它不需要DI容器.因此,您的WebApi项目和单元测试项目都不需要DI容器.
虽然有些人喜欢在单元测试中使用DI容器,但对我来说这似乎有些过分.单元测试是关于一次测试1个被测试的类.测试场景中的其余类都应该是存根或模拟.如果遵循良好的设计实践(不使用构造函数过度注入),您通常在一个场景中不超过4个实例 - 被测试的类和最多3个假类.使用new创建这些实例的关键字不仅更简单,而且使单元测试更容易理解.单元测试的一个重要方面是使它们易于理解,以便其他人可以轻松地看到正在测试的内容以及在文档不清楚时如何使用它们来理解API.
在集成测试或用户验收测试期间,您可能会考虑更严肃地使用DI来组合组件,因为在这些情况下,您通常会有多个被测试的组合在一起.
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |