Unit testing 在单元测试中模拟Mapper.Map()
我的控制器中有以下代码行,需要为单元测试设置此代码行Unit testing 在单元测试中模拟Mapper.Map(),unit-testing,mocking,moq,Unit Testing,Mocking,Moq,我的控制器中有以下代码行,需要为单元测试设置此代码行 var result = data.ToList().Select(x=> this.mapper.Map<A_Class, B_Class> (x)).ToList(); var result=data.ToList().Select(x=>this.mapper.Map(x)).ToList(); 我在做类似以下的事情 this.mapperMock.Setup(x => x.Map<A_Clas
var result = data.ToList().Select(x=> this.mapper.Map<A_Class, B_Class> (x)).ToList();
var result=data.ToList().Select(x=>this.mapper.Map(x)).ToList();
我在做类似以下的事情
this.mapperMock.Setup(x => x.Map<A_Class, B_Class>(AAA)).Returns(expectedResult);
this.mapperMock.Setup(x=>x.Map(AAA)).Returns(expectedResult);
有人能建议什么应该是AAA,什么应该是预期结果吗?在我的控制器中,我的linq用于数据中一个_类的每个对象。如果您想返回假
expectedResult
而不管传递了A_Class
的哪个值,如何在UnitTest中设置此选项:
mapperMock.Setup(x => x.Map<A_Class, B_Class>(It.IsAny<A_Class>))
.Returns(expectedResult);
请注意,如果没有匹配的设置,Moq将返回一个默认值,对于引用类型,该值将为
null
。var result=data.ToList()。选择(x=>this.mapper.Map(x)).ToList();返回一个B_类的列表。我的预期结果应该是B_类的列表或对象吗。select将迭代您的输入列表,并将调用Map
为每个a
投影一个B_类
,然后在ToList
中再次整理该类(您只是模拟了AutoMapper.Map
,而不是整个Linq:-),非常感谢。你能给我推荐一些关于单元测试的好东西吗。我需要学习如何有效地测试所有层,例如存储库、服务、MVC控制器等。一些实践教程或材料如何断言数据。应等效到(expectedResult);这?如果您正在测试的方法预期会返回一个确切的实例,您可以通过引用进行检查,例如,Assert.AreEqual(expectedResult,actualResult)
。如果没有,则需要检查两者的每个相关属性,或者在expectedResult
类上实现IComparable
,甚至序列化两者并比较输出。i、 e.没有神奇的方法来比较两个实体或一个图形的所有属性,AFAIK。Roy Osherove是C#and Unit testing领域的大师之一——谷歌应该给你一些好的参考资料/书籍。
mapperMock.Setup(
x => x.Map<A_Class, B_Class>(It.Is<A_Class>(_ => a.Property == "foo")))
.Returns(expectedResult);