簡體   English   中英

是否有用於順序應該斷言的 Resharper 模式?

[英]Is there a Resharper pattern for sequential Shouldly asserts?

我正在嘗試提出一個 Resharper 模式來應用於順序應該斷言。 例如,我有這些檢查:

    field1.ShouldNotBeNull();
    field2.ShouldBe(expectedField2Value);

在這種情況下,它應該替換為:

    this.ShouldSatisflyAllConditions(
    () => field1.ShouldNotBeNull(),
    () => field2.ShouldBe(expectedField2Value));

如果這是唯一的情況,那也沒有問題,但問題是我目前管理的模式中沒有涵蓋許多不同的可能性。 我想要做的是達到這樣的程度,即任何時候我都會得到兩次或更多的任何類型的順序檢查(ShouldBeNull、ShouldNotBeNull、ShouldContain 等),我會被警告將所有這些檢查放在 ShouldSatisfyAllConditions 塊中,因為如果我將其保留為單獨的斷言,則測試將在一個失敗后立即停止運行,而不是在后一種情況下給我一個失敗列表。 我面臨的問題是:

  1. 我一直無法在模式中使用任何字段名稱。 當我 select 和“搜索模式”時,我只是得到那些特定字段的名稱,不適用於整個項目。

編輯:我的錯誤。 我嘗試的模式適用於任何名稱的兩個字段被斷言為非 null。

  1. 我一直無法將它與任何應該的斷言一起應用,我必須將它作為一個案例逐個案例(例如上面的示例)。 我只得到特定的模式而不是更通用的模式。
  2. 除了非常具體的案例外,我不能在有兩個或更多案例的任何時候應用這個。 我要 select 每個圖案,2行,3行等等。

我正在使用 VS 17 Enterprise 和 JetBrains ReSharper Ultimate 2019.2.2。 這個:

    $field1$.ShouldNotBeNull();
    $field2$.ShouldNotBeNull();

替換為:

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

如果你真的想這樣做,你可以使用參數 Action[]

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM