我已经看到很多关于单元测试automapper'map'的问题,但是你如何模拟'MapTo'。这需要一个IMapper作为它的对象。所以,这就是我到目前为止所拥有的:
private Mock<IMapper> _mapper;
[TestInitialize]
public void Init()
{
_mapper = new Mock<IMapper>();
//other stuff initialised.
}
[TestMethod]
public void MyTest()
{
_mapper.Setup(m => m.MapTo<IList<Something>>(_mapper.Object)).Returns(myList);
//setup repository etc.
}
这会引发“扩展方法上的无效设置...”错误。那么,我如何模拟对'MapTo'的调用呢?
只是为了澄清,我知道我可以使用映射器的实际版本并创建实际的映射,如:
private MapperConfiguration CreateMaps()
{
return new MapperConfiguration(mc =>
{
mc.CreateMap<MyEntity, MyObject>();
mc.CreateMap<MyOtherEntity, MyOtherObject>();
});
}
_mapper = new Mapper(CreateMaps());
但是,我仍然很好奇如何嘲笑它。使用Map而不是MapTo似乎很容易
我不确定你能不能。 MapTo(...)
基本上是一个静态方法,与任何其他方法一样,具有一些奇特的语法,使它看起来像IDE中对象的一部分。
鉴于它实际上并不是你嘲笑的对象的一部分,你的选择是有限的。你最好的选择是查看MapTo(...);
的代码,也许内部是可以模仿的。
别?这不值得。像JSON.NET一样对待它。