C# NUnit:Automapper<;IDataReader,Dto>;。ConvertUsing()返回具有null属性的Dto
我正在使用AutoMapper将IDataReader映射到一个简单的DTO 我可以在使用FormMember时映射属性,但在使用ConstructUsing/ConvertUsing时无法映射属性。在本例中,我的所有NUnit测试都失败,因为AutoMapper返回一个带有null属性的DTO。 有趣的是,这种行为在MSTest中不会发生:在MSTest下运行测试时,映射工作正常 代码如下:C# NUnit:Automapper<;IDataReader,Dto>;。ConvertUsing()返回具有null属性的Dto,c#,nunit,automapper,mstest,idatareader,C#,Nunit,Automapper,Mstest,Idatareader,我正在使用AutoMapper将IDataReader映射到一个简单的DTO 我可以在使用FormMember时映射属性,但在使用ConstructUsing/ConvertUsing时无法映射属性。在本例中,我的所有NUnit测试都失败,因为AutoMapper返回一个带有null属性的DTO。 有趣的是,这种行为在MSTest中不会发生:在MSTest下运行测试时,映射工作正常 代码如下: public class Dto { public string Name { get; set; }
public class Dto
{
public string Name { get; set; }
public string Value { get; set; }
}
这将通过NUnit和MSTest:
Mapper.CreateMap<IDataReader, Dto>()
.ForMember(x => x.Name, map => map.MapFrom(reader => reader["Name"]))
.ForMember(x => x.Value, map => map.MapFrom(reader => reader["Value"]));
Mapper.CreateMap()
.ForMember(x=>x.Name,map=>map.MapFrom(reader=>reader[“Name”]))
.ForMember(x=>x.Value,map=>map.MapFrom(reader=>reader[“Value”]);
这仅在MSTest中通过,并在NUnit中返回具有null属性的Dto:
Mapper.CreateMap<IDataReader, Dto>()
.ConvertUsing(Map); // ConstructUsing doesn't work either
private Dto Map(IDataReader reader)
{
return new Dto
{
Name = (string)reader["Name"],
Value = (string)reader["Value"]
};
}
Mapper.CreateMap()
.ConvertUsing(Map);//构造函数也不起作用
专用Dto地图(IDataReader阅读器)
{
返回新Dto
{
名称=(字符串)读取器[“名称”],
值=(字符串)读取器[“值”]
};
}
在NUnit中甚至没有调用MyTestMethod
这是AutoMapper中的错误吗?在努尼特?两者都有
我应该不使用AutoMapper进行IDataReader映射吗
提前谢谢。在我无意中发现这个问题后, 我发现这与NUnit/MsTest无关,只是由于AutoMapper.Net4.DLL在我的项目中引起的 此DLL包含DataReaderMapper,它覆盖了我的自定义IDataReader映射。 由于我的实际项目列与对象的属性名称不匹配,DataReaderMapper只返回null (至于NUnit/MsTest,我有不同的项目,并且没有怀疑其中一个项目中有额外的DLL。在缩小问题范围后,我能够在两个框架上重现它。) 从我的项目中删除AutoMapper.Net4.DLL解决了这个问题
很抱歉提出了一个误导性的问题:)什么是
MyTestMethod
?你能发布完整的单元测试吗?