c# - FluentAssertions 排除重复配置

标签 c# unit-testing fluent-assertions

我有这样的单元测试代码:

// version3 should be a copy of version2 with some differences
version3.Data.ShouldBeEquivalentTo(version2,
  option => option
    .Excluding(x => x.Id)
    .Excluding(x => x.Status)
    .Excluding(x => x.Stale)
    .Excluding(x => x.Body)
    .Excluding(x => x.CreatedBy)
    .Excluding(x => x.UpdatedBy),
  "because version3 is version2 updated");

再一次

// version4 should be a copy of version3 with some differences
version4.Data.ShouldBeEquivalentTo(version3,
  option => option
    .Excluding(x => x.Id)
    .Excluding(x => x.Status)
    .Excluding(x => x.Stale)
    .Excluding(x => x.Body)
    .Excluding(x => x.CreatedBy)
    .Excluding(x => x.UpdatedBy),
  "because version4 is version3 updated");

我怎样才能排除选项

我想做这样的事情:

// version3 should be a copy of version2 with some differences
version3.Data.ShouldBeEquivalentTo(version2,
  option => baseOption,
  "because version3 is version2 updated");

甚至可能是这样的:

// version3 should be a copy of version2 with some differences
version3.Data.ShouldBeEquivalentTo(version2,
  option => baseOption
    .Excluding(x => x.OtherProperty),
  "because version3 is version2 updated");

最佳答案

在外部声明选项委托(delegate)作为基础

Func<FluentAssertions.Equivalency.EquivalencyAssertionOptions<MyDataType>,
    FluentAssertions.Equivalency.EquivalencyAssertionOptions<MyDataType>>
    baseOption = option => option
        .Excluding(x => x.Id)
        .Excluding(x => x.Status);

并将其与断言一起使用

// version3 should be a copy of version2 with some differences
version3.Data.ShouldBeEquivalentTo(version2, baseOption, 
    "because version3 is version2 updated");

对于需要在基础上构建的其他断言,您必须调用委托(delegate)并附加其他选项

// version3 should be a copy of version2 with some differences
version3.Data.ShouldBeEquivalentTo(version2,
  option => baseOption(option)
    .Excluding(x => x.OtherProperty),
  "because version3 is version2 updated");

您应该注意,当前使用的语法在较新版本的框架中已被弃用。

version3.Should().BeEquivalentTo(version2, baseOption, 
    "because version3 is version2 updated");

关于c# - FluentAssertions 排除重复配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50166216/

相关文章:

c# - 流利的断言 : string does not contain a definition for ShouldBeEquivalentTo

c# - XNA 游戏分辨率高于 PC 分辨率 - 它会导致问题吗?

c# - 系统托盘访问

c# - 对 2 个实体的操作 - 如何以及在哪里设计?

c++ - FastCGI 和 boost::asio 用于单元测试

asp.net-core - 使用 OpenCover 运行 XUnit 和 FluentAssertions 会出现错误消息

c# - ASP MVC 过滤器,在哪里实现接口(interface)?

c# - 确定两个数据表包含相同数据的最快方法?

swift - XCode7 单元测试失败(编译器错误)

c# - 使用 Fluent Assertions 库的多个断言