Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FluentAssertions因子输出重复配置_C#_Unit Testing_Fluent Assertions - Fatal编程技术网

C# FluentAssertions因子输出重复配置

C# FluentAssertions因子输出重复配置,c#,unit-testing,fluent-assertions,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) .Excludin

我有如下的单元测试代码:

// 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");
// version3 should be a copy of version2 with some differences
version3.Data.ShouldBeEquivalentTo(version2,
  option => baseOption,
  "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 => 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");
// 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");

将选项委托外部声明为基础

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,
  option => baseOption(option)
    .Excluding(x => x.OtherProperty),
  "because version3 is version2 updated");
您应该注意,当前使用的语法在较新版本的框架中已被弃用

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

或者切换到v5,以便将测试对象与匿名类型进行比较,在匿名类型中,您只定义您关心的特定测试属性。

在方法调用外部声明委托,并根据需要附加到该委托。请提供一个示例。这个特性简化了很多测试用例。