簡體   English   中英

流利的斷言應該大於總是通過

[英]Fluent assertion should be greater than always pass

我正在嘗試使用以下方法測試我的收藏集:

  var costByFactoryt = dataAccess.GetcostPerFactoryt(null, null);
  costByFactoryt.Count().Should().BeGreaterThan(0);
  costByFactoryt.Select(x => x.Cost.Should().BeGreaterThan(100));

但是問題是,如果我將代碼的最后一行更改為

 costByFactoryt.Select(x => x.Cost.Should().BeGreaterThan(1000));

要么

costingByCircuit.Select(x => x.Cost.Should().BeLessThan(100));

它仍然通過,這是錯誤的。

我要測試的是,所有費用應大於100。

那樣根本行不通,因為LINQ Select不會迭代集合=>未執行您的測試代碼

根據Fluent斷言文檔

正確的語法應該是

costingByCircuit.Select(x => x.Cost).Should().OnlyContain(x => x > 100);

然后寫costByFactoryt.Select(x => x.Cost.Should().BeGreaterThan(100)); 是什么都不測試。 它創建了一個懶惰的LINQ表達式,該表達式永遠不會被迭代,即BeGreaterThanBeGreaterThan被調用。

當使用流利的斷言,你會得到你避免使用最詳細的故障信息Select更多的信息,然后提供給失敗的消息發生器。

什么時候

costByFactoryt.Select(x => x.Cost).Should().OnlyContain(x => x > 100)

失敗,消息生成器將輸出Cost對象。

通過寫

costByFactoryt.Should().OnlyContain(x => x.Cost > 100)

失敗消息將包含所有x對象。

暫無
暫無

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

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