Automapper单元测试失败

本文关键字:失败 单元测试 Automapper | 更新日期: 2023-09-27 18:18:23

我刚刚决定尝试一下Automapper。

我在我的项目中写了一些单元测试,当我"运行全部"时,它们都像预期的那样通过了。但是,当我运行单个测试时,它们都失败了…那么,我是不是漏掉了什么特别的设置?

下面是代码。

 [TestMethod]
    public void Mappings_ConfigureMappings_pass()
    {           
        Mapper.CreateMap<Address, AddressDTO>();
        Mapper.AssertConfigurationIsValid();
    }

但是当我运行一个实际的映射测试时,测试失败了。

[TestMethod]
    public void Mappings_ViewModel_Address_ToDTO_pass()
    {
        var address = new Address()
        {
            Address1 = "Line1",
            Address2 = "Line2",
            Address3 = "Line3",
            Country = "ROI",
            County = "Co Dublin",
            PostCode = "ABC",
            TownOrCity = "Dublin"
        };
        AddressDTO addressDTO = Mapper.Map<Address, AddressDTO>(address);
        Assert.IsNotNull(addressDTO);
        Assert.AreEqual("ROI", addressDTO.Country);
        Assert.AreEqual("Dublin", addressDTO.TownOrCity);
    }

,这里是相关的类…正如你所看到的,它们是相同的,那么为什么测试失败了呢?是我在设置中遗漏了什么吗?

public class Address 
{
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string Address3 { get; set; }
    public string County { get; set; }
    public string Country { get; set; }
    public string PostCode { get; set; }
    public string TownOrCity { get; set; }       
}
public class AddressDTO
{
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string Address3 { get; set; }
    public string County { get; set; }
    public string Country { get; set; }
    public string PostCode { get; set; }
    public string TownOrCity { get; set; } 
}

下面是失败消息:

Missing type map configuration or unsupported mapping.
Mapping types:
Address -> AddressDTO
UI.Address -> Services.DataTransferObjects.AddressDTO
Destination path:
AddressDTO
Source value:
UI.Address

Automapper单元测试失败

问题是您在一个测试中配置映射,并期望另一个测试使用这个配置。

考虑到它们应该是独立的,所以一个测试不能依赖于其他测试执行。这真的很重要

您需要在Mappings_ViewModel_Address_ToDTO_pass或普通设置上创建映射。