在单元测试中模拟Mapper.Map()

时间:2014-04-10 09:52:16

标签: unit-testing mocking moq

我的控制器中有以下代码行,需要将其设置为单元测试。

var result = data.ToList().Select(x=> this.mapper.Map<A_Class, B_Class>   (x)).ToList();

我做的事情如下

  this.mapperMock.Setup(x => x.Map<A_Class, B_Class>(AAA)).Returns(expectedResult);

任何人都可以建议什么应该是AAA,什么应该是expectResult?在我的控制器中,我的linq工作在Data中的A_Class的foreach对象。如何在UnitTest中设置

1 个答案:

答案 0 :(得分:1)

如果您想要返回假的expectedResult,无论A_Class的值是多少都是

mapperMock.Setup(x => x.Map<A_Class, B_Class>(It.IsAny<A_Class>))
          .Returns(expectedResult);

如果您想更具体,例如只需为映射expectedResult返回A_Class,其属性值为&#39; foo&#39;:

mapperMock.Setup(
         x => x.Map<A_Class, B_Class>(It.Is<A_Class>(_ => a.Property == "foo")))
    .Returns(expectedResult);

请注意,如果没有设置匹配,Moq将返回默认值,对于引用类型,该值将为null