【发布时间】:2014-07-07 12:34:11
【问题描述】:
我正在使用 AutoMapper 从 IDataReader 映射到一个简单的 DTO。
我可以在使用 ForMember 时映射属性,但在使用 ConstructUsing/ConvertUsing 时不能。在这种情况下,我所有的 NUnit 测试都失败了,因为 AutoMapper 返回一个具有空属性的 DTO。 有趣的是,这种行为在 MSTest 中不会发生:在 MSTest 下运行测试时,映射起作用。
代码如下:
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"]));
这仅在 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"]
};
}
在 NUnit 中甚至没有调用 MyTestMethod。
这是 AutoMapper 中的错误吗?在 NUnit 中?两者都有?
我不应该使用 AutoMapper 进行 IDataReader 映射吗?
提前致谢。
【问题讨论】:
-
什么是
MyTestMethod?你能发布完整的单元测试吗?
标签: c# nunit automapper mstest idatareader