我已经编写了 valueconverter 并为它编写了一个测试用例。当我将模拟映射器传递给解析上下文时,它的行为与设置不同。这是我的代码 -
转换器 -
public class AirlineConverter : IValueConverter<string, Airline>
{
public Airline Convert(string sourceMember, ResolutionContext context)
{
var airlines = context.Options.Items["automap_airlines"] as List<EngineContract.Airline>;
var airline = airlines.Find(airLine => airLine.Code == sourceMember);
return context.Mapper.Map<Airline>(airline);
}
}
测试用例 -
[Theory]
[JsonFileData("airlines.json")]
public void Translate_Engine_Airline_ViewModel_Airline(string airlines)
{
var airlinesList = JsonConvert.DeserializeObject<List<EngineContract.Airline>>(airlines);
var mappingOperationMock = new Mock<IMappingOperationOptions<string, Airline>>(MockBehavior.Strict);
mappingOperationMock.Setup(x => x.Items).Returns(new Dictionary<string, object>() { { "automap_airlines", airlinesList } });
var airlineConverter = new AirlineConverter();
var mockMapper = new Mock<IRuntimeMapper>();
mockMapper.Setup(x => x.Map<Airline>(It.IsAny<EngineContract.Airline>())).Returns(
new Airline() { Code = "AA" }
); //not getting this object in AirlineConverter in response of context.Mapper.Map<Airline>(airline);
var resolutionContext = new ResolutionContext(mappingOperationMock.Object, mockMapper.Object);
var convertedAirline = airlineConverter.Convert("AA", resolutionContext);
Assert.Equal("AA", convertedAirline.Code);
}
我在响应 context.Mapper.Map(airline); 时得到空值。在航空公司转换器中。这里有什么问题?