C# 对于连续的Shouldly断言是否有一个重竖琴模式?

C# 对于连续的Shouldly断言是否有一个重竖琴模式?,c#,resharper,shouldly,C#,Resharper,Shouldly,我正在尝试提出一种重新夏普模式来应用于连续的Shouldly断言。 例如,我有这些支票: field1.ShouldNotBeNull(); field2.ShouldBe(expectedField2Value); 在这种情况下,应将其替换为: this.ShouldSatisflyAllConditions( () => field1.ShouldNotBeNull(), () => field2.ShouldBe(expectedFie

我正在尝试提出一种重新夏普模式来应用于连续的Shouldly断言。 例如,我有这些支票:

    field1.ShouldNotBeNull();
    field2.ShouldBe(expectedField2Value);
在这种情况下,应将其替换为:

    this.ShouldSatisflyAllConditions(
    () => field1.ShouldNotBeNull(),
    () => field2.ShouldBe(expectedField2Value));
如果这是唯一的情况,也没有问题,但问题是,有很多不同的可能性,我目前管理的模式没有涵盖。我试图做到的是,每当我得到两个或更多的任意类型的顺序检查(ShouldBeNull、ShouldBeNull、ShouldBeNull、ShouldContain等)时,我都会被警告将所有这些检查都放在shouldbenfullconditions块中,因为如果我将其作为单独的断言保留,一旦一个失败,测试就会停止运行,而不是在后一种情况下给我一个失败的清单。 我面临的问题是:

  • 我无法在模式中使用任何字段名。当我选择 和“搜索模式”,我只是得到那些特定的名字 字段,不适用于整个项目
  • 编辑:我错了。只要两个具有任何名称的字段被断言为NOTNULL,就会应用我尝试的模式

  • 我无法将此应用于任何Shouldly断言,我必须将其视为一个个案(如上面的示例)。我只得到特定的模式,而不是更一般的模式
  • 除了非常具体的案例之外,我不能在有两个或两个以上案例的任何时候应用这个。我必须选择每个图案,2条线,3条线等等
  • 我使用的是VS 17 Enterprise和JetBrains ReSharper Ultimate 2019.2.2。 这:

    替换为:

        this.ShouldSatisfyAllConditions(
    () => $pageStyleProperty$.ShouldNotBeNull(),
        () => $_editorObject$.ShouldNotBeNull());
    

    如果您真的想这样做,可以使用params操作[]

     public void ShouldSatisfyAllConditions(params Action[] assertions)
     {
           foreach (var assertion in assertions)
           {
               assertion?.Invoke();
           }
     }
    
    

    谢谢,但是应该已经提供了一个ShouldSatisfyAllConditions函数。我的问题是找到任何存在两个或多个连续断言的实例,并将其重构到shouldstatisfyallconditions块中。很抱歉,误读了您的问题您希望分析器找到这些场景。我的错。
     public void ShouldSatisfyAllConditions(params Action[] assertions)
     {
           foreach (var assertion in assertions)
           {
               assertion?.Invoke();
           }
     }