[英]How to 'get arguments for calls made on' a Mock in Pester (or otherwise generate a helpful message containing actual and expected values)?
雖然有許多使用Pester 斷言模擬的例子,但是我無法找到關於如何使用Pester獲取模擬參數的好(或任何)示例; 這對於獲取有意義的錯誤消息非常有用,而不是具有如此實用性的通用消息:
預期調用-XYZ至少被調用1次,但被調用0次
謝謝,顯然; 也許是一個“沒有用”的問題。
例如,在RhinoMocks + NUnit(C#)中,可以使用類似於以下內容的代碼斷言調用mock 並且參數符合某些條件。 如果進行了調用並且參數不匹配,則會顯示一條有用的斷言消息:
var actual = mock.GetArgumentsForCallsMadeOn(m => ..);
Assert.That(actual, Is.EqualTo(expected));
如何在Pester中完成同樣的(或類似的)?
目標是使失敗的模擬斷言導致有用的錯誤消息,關於什么特定參數未能達到預期,以及具有什么值。
PowerShell是5.1,而Pester是4.8.1。
關於Pester測試和參數檢查,我有同樣的問題/疑問; 總是很難找到哪個參數可能在給定的-ParameterFilter
表達式中失敗。
它出現在幾個GitHub問題中:
但似乎還沒有任何解決方案或共識。 如果可以,我會嘗試在那里添加對話。
一位用戶談到在Assert-MockCalled
調用中調用Verify函數:
It 'multiple expressions, second line' {
Assert-MockCalled f 1 {
($a -eq 1 | Verify) -and
($b -eq 1 | Verify) -and
($b-1 -eq $a | Verify)
}
}
這提供了更好的輸出,但是這是一種hacky / verbose方式。
就個人而言,我的解決方法是編寫多個Assert-MockCalled
語句,每個語句都帶有一個-ParameterFilter
表達式,該表達式只檢查一個參數,這樣我就可以根據哪個Assert-MockCalled
語句失敗來知道哪個參數失敗了。 但是,如果在函數內多次調用mock,這種方法效果不佳。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.