我有一个单元测试 - 我在设置中进行AutoMapperConfiguration . 然后我将IMappingEngine设置为我的类中的构造函数中的私有属性,我实际上在其中进行映射 . 如果我使用此属性,单元测试失败,但使用来自automapper的静态方法可以正常工作 . 这两种方法在运行实际程序时都能正常工作 . 我能看到的唯一区别是单元测试是在一个单独的组件中 . CLS合规性已启用 .
public class AutomapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(cfg =>
{
cfg.AddProfile<AclassMappingProfile>();
});
}
public static void Reset()
{
Mapper.Reset();
}
}
public class AssetModelFactoryTests
{
[SetUp]
public void SetUp()
{
AutomapperConfiguration.Configure();
}
[Test]
public void TestA()
{
var a = new A();
}
}
public class A
{
private IMappingEngine _mappingEngine;
public A()
{
_mappingEngine = Mapper.Engine;
}
public void DoA()
{
Mapper.Map<Destination>(source); //works
_mappingEngine.Map<Destionation>(source); //Throws mapping not supported
}
}
1 回答
如果您计划测试方法,请不要使用静态
Mapper.*
方法 . 在任何地方使用IMappingEngine
,在应用程序启动时配置它并通过适当的依赖性反转机制注入 .