簡體   English   中英

如何'在Pester模擬中調用調用的參數(或以其他方式生成包含實際值和期望值的有用消息)?

[英]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問題中:

  1. https://github.com/pester/Pester/issues/376
  2. https://github.com/pester/Pester/issues/1160

但似乎還沒有任何解決方案或共識。 如果可以,我會嘗試在那里添加對話。

一位用戶談到在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.

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