2017-06-09 56 views
0

我們都知道在Moq中,我們可以使用Setup來嘲笑方法。我如何檢查方法是否正在設置?我不想調用這個方法並且檢查它的結果,因爲在Verify期間,這個方法會作爲一個模擬方法的實際調用來計數(除非你能告訴我如何使這個不算 - 這也算作答案)。Moq - 檢查方法是否被模擬(設置編輯)

+0

在測試下運行代碼之前的設置方法,那麼你總是會知道設置方法 – Fabio

+0

這很明顯。我有特定的場景,我需要檢查我是否已經完成設置。 – Tengiz

+2

我不相信有什麼辦法可以看到Moq做了什麼設置,但我很好奇你會爲這種需求使用哪種用例?我的每一個人都在說'你正在過度設計一個單元測試'來滿足這個需求,因爲嘲笑本質上意味着在單元測試期間被設置爲隱含的。我確信這是一個有效的原因,但我真的很好奇這是什麼原因 –

回答

1

其實,我剛剛發現ResetCalls方法定義在Mock,它會重置計數器。這可以幫助我,因爲我可以調用父方法並將結果與​​預期結果進行比較。如果方法返回null,然後我設置,因爲它尚未完成,然後我通過調用ResetCalls來重置計數器(就像我從未檢查過該方法的結果一樣)。然後我繼續孩子的設置。

我需要注意其副作用,但在這裏張貼以防其他人有相同的問題。我仍然希望能夠找到更好的答案,例如可能會將上次調用重置爲模擬方法。我目前的發現重置了所有的呼叫,這可能不是我想要的所有情況。

+0

_如果該方法返回null,那麼我安裝,因爲它還沒有完成 - 不要忘記爲你的測試編寫單元測試:) – Fabio

+0

對,我們確實有單元測試,事實證明......但我'與你完全一樣。 – Tengiz