关于单元测试自动映射器“ 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”的调用?
请澄清一下,我知道我可以使用实际版本的mapper并创建实际的地图,例如:
private MapperConfiguration CreateMaps()
{
return new MapperConfiguration(mc =>
{
mc.CreateMap<MyEntity, MyObject>();
mc.CreateMap<MyOtherEntity, MyOtherObject>();
});
}
_mapper = new Mapper(CreateMaps());
但是,我仍然很好奇如何模拟它。使用Map似乎很容易,但使用MapTo却不是
答案 0 :(得分:1)
我不确定你可以。 MapTo(...)
基本上是一个静态方法,就像其他方法一样,带有一些精美的语法,使其看起来像IDE中对象的一部分。
鉴于它实际上并不是您要嘲笑的对象的一部分,因此您的选择受到限制。最好的选择是查看MapTo(...);
的代码,也许内部是可模拟的。
答案 1 :(得分:1)
不是吗?这不值得。像JSON.NET一样对待它。