Ask*_*Ask 2 unit-testing moq xunit asp.net-core
我在 .net core 中有一个应用程序,我在其中一项服务中使用 automapper。现在的问题是我正在编写测试方法并模拟自动映射器,但它返回 null。以下是服务方法:
var users = _mapper.Map<IList<User>>(data);
Run Code Online (Sandbox Code Playgroud)
这是使用 Moq 进行的模拟:
var userLogsList = new List<User>() { new User() {Id = "1234", Name= "Dummy User"}};
var mapperMock = new Mock<IMapper>();
mapperMock.Setup(m => m.Map<List<UserEntity>, IList<User>>(It.IsAny<List<UserEntity>>()))
.Returns(userLogsList);
Run Code Online (Sandbox Code Playgroud)
现在这个模拟每次都返回 null。我究竟做错了什么?
您还可以考虑使用IMapper专门为测试配置的实际实例。
// Arrange
//Configure mapping just for this test
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<User, UserEntity>();
cfg.CreateMap<UserEntity, User>();
});
var mapper = config.CreateMapper(); // IMapper to be injected into subject under test
//...
Run Code Online (Sandbox Code Playgroud)
如果可以在没有太大影响和最少配置的情况下使用依赖项,那么并不总是有理由必须使用模拟。
在这种情况下,配置比创建模拟要简单得多,并且您无需额外工作即可获得依赖项的完整功能。
| 归档时间: |
|
| 查看次数: |
3433 次 |
| 最近记录: |