【问题标题】:unit test convert to dto extension method with fluentconversion单元测试使用fluentconversion转换为dto扩展方法
【发布时间】:2019-11-26 05:00:19
【问题描述】:

如果我有一个将Person 对象转换为PersonDTO 的扩展方法,那么

  1. 我是否应该对转换正确进行单元测试
  2. 如果是这样并且我使用fluentassertions 我如何断言转换是正确的

我的扩展方法是:

public static PersonDTO ToDto (this Person person)
    {
        if (person == null) return null;
        return new PersonDTO
        {
            FirstName = person.FirstName,
            LastName = person.LastName,
            Dob = person.Dob,
            Identifier= person.Id
        };            
    }

我的人员对象还有其他未被映射的属性。

因此,为了获得 personDTO 对象,我将执行类似于以下的操作:

var newPerson = new Person{ //set properties here };
var personDto = newPerson.ToDto();

【问题讨论】:

    标签: unit-testing fluent-assertions


    【解决方案1】:

    首先,是的,应该测试这段代码。

    为了检查转换是否正确,你必须手动构建预期的结果,然后断言函数的结果是一样的:

    var person = new Person{ ... };
    var expectedPersonDto = new PersonDto{ ... };
    person.ToDto().Should().BeEquivalentTo(expectedPersonDto);
    

    有关比较对象图的更多信息,请参阅this

    【讨论】:

    • 好的,谢谢 - 我想可能是这样 - 如果对象有很多属性,创建预期结果可能会很乏味。
    • 确实,这就是您可能想要创建创建这些对象的构建器的原因。见here
    • 或者比较一下具有你关心的属性的匿名类型。 FA 将忽略其余部分。但是,我不会测试这些单独的方法,而是将其作为公开它的 API 的一部分进行测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2019-01-30
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多