我正在编写用于 ASP.NET MVC 控制器方法的单元测试。
这些控制器依赖于 IMapper
- 一个我创建的接口,用于抽象 AutoMapper,并通过构造函数注入使用 Castle Windsor 传递。
动作方法使用 IMapper
将领域对象映射到 ViewModel 对象,然后再映射回来,旨在保持 DRY 并使动作方法简洁。
在我的单元测试中,我应该
使用正确的绑定配置 AutoMapper(它们使用 AutoMapper 档案创建,因此可在网站和单元测试项目之间进行测试并重复使用),并将其作为合适的 AutoMapper 实现传递给
IMapper
。根据测试情况,传入
IMapper
实例的模拟对象 (我正在使用 Moq),这意味着需要在测试设置代码中复制一些工作,以确保模拟 mapper 返回的对象与模拟 mapper 假装映射的对象相关联)。手动配置 AutoMapper,只配置我认为每个测试需要的映射 (需要很多工作,并意味着我不测试真正使用的映射)。
关于在单元测试中使用基础结构代码的看法是什么?在什么时候会成为集成测试(即测试 AutoMapper 和我的控制器的集成)?
感觉 2 是最纯粹的观点,尽管我认为我需要学习更多关于 Moq 如何返回与其模仿的方法传入的实际值相关的值。