using Util.ObjectMapping.AutoMapper.Tests.Samples;
using Xunit;
namespace Util.ObjectMapping.AutoMapper.Tests;
///
/// 对象映射器测试
///
public class ObjectMapperTest {
///
/// 对象映射器
///
private readonly IObjectMapper _mapper;
///
/// 测试初始化
///
public ObjectMapperTest( IObjectMapper mapper ) {
_mapper = mapper;
}
///
/// 测试映射 - Sample -> Sample2 已在配置类中配置映射关系
///
[Fact]
public void TestMap_1() {
var sample = new Sample { StringValue = "a" };
var sample2 =_mapper.Map( sample );
Assert.Equal( "a", sample2.StringValue );
}
///
/// 测试映射- Sample -> Sample2 已在配置类中配置映射关系 - 两参数重载
///
[Fact]
public void TestMap_2() {
var sample = new Sample { StringValue = "a" };
var sample2 = new Sample2();
_mapper.Map( sample, sample2 );
Assert.Equal( "a", sample2.StringValue );
}
///
/// 测试映射 - Sample2 -> Sample 未在配置类中配置,将自动配置映射
///
[Fact]
public void TestMap_3() {
var sample2 = new Sample2 { StringValue = "a" };
var sample = _mapper.Map( sample2 );
Assert.Equal( "a", sample.StringValue );
}
///
/// 测试映射 - 用于重现动态配置后映射之前的配置出现问题
/// 1. 执行Sample -> Sample2映射,已在配置类中配置映射关系
/// 2. 执行Sample2 -> Sample映射,未在配置类中配置,将自动配置映射
/// 3. 重复执行Sample -> Sample2映射
///
[Fact]
public void TestMap_4() {
var sample = new Sample { StringValue = "a" };
var sample2 = _mapper.Map( sample );
Assert.Equal( "a", sample2.StringValue );
var sample3 = _mapper.Map( sample2 );
Assert.Equal( "a", sample3.StringValue );
var sample4 = _mapper.Map( sample );
Assert.Equal( "a", sample4.StringValue );
}
}