![](/img/trans.png)
[英]How can I have custom asserts with Shouldly and maintain the call-site-specific assertion messages?
[英]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 塊中,因為如果我將其保留為單獨的斷言,則測試將在一個失敗后立即停止運行,而不是在后一種情況下給我一個失敗列表。 我面臨的問題是:
- 我一直無法在模式中使用任何字段名稱。 當我 select 和“搜索模式”時,我只是得到那些特定字段的名稱,不適用於整個項目。
編輯:我的錯誤。 我嘗試的模式適用於任何名稱的兩個字段被斷言為非 null。
我正在使用 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.