2013-03-21 91 views
5

我使用gmock來模擬遺留代碼中的依賴關係。其中一個類有11個參數的方法。當我嘗試使用MOCK_METHOD11_WITH_CALLTYPE來模擬它時,我發現這個宏不存在。 gmock只支持10個參數。你對此有什麼建議?我是否用虛擬身體來實現這個方法?或者複製&擴展宏?謝謝! PS,我現在不需要在我的測試中嘲笑這種方法,但可能需要在將來這樣做。帶有11個參數的模擬方法與gmock

最好的問候,

回答

5

超過10個參數的方法可能是麻煩的跡象。我可以建議一種解決方法,它可以幫助你解決特定的問題,但除了嘲笑之外,這也是一個好主意。以幾個有意義的參數作爲一個組,並將它們聚合在一個結構體中。然後將該結構的實例作爲參數傳遞給該方法。因此,而不是11個參數,你可能會有3或4.這不僅有助於解決模擬庫問題,而且可能會提高類的可用性,因爲具有如此多參數的方法通常很難在呼叫站點。

+0

我同意這是一種代碼氣味。我很欣賞你的建議。但它是一個遺留的代碼庫,因爲該方法是API的一部分,所以我會嘗試其他方法。現在,我壓倒一個微不足道的版本。 – Archer 2013-03-21 05:11:59

+0

遺留代碼不是問題:只需添加一個採用結構的新方法,也可以保留舊方法,並讓其中一個調用另一個。沒什麼大不了的,它使它向後兼容,並且仍然適合你的測試。 – 2013-03-22 10:56:12

0

如果有人在這裏需要更多的gmock參數是僅標頭擴展:gmock-more-args