2014-06-30 58 views
1

作爲我的另一個問題的附錄:How to create Spock mocks outside of a specification class? - 是否有可能改變規範之外的Mocks行爲?如何更改Spock Mock的規範之外的行爲?

在我們的項目中,我們有很多在我們的規格代碼讀取這樣的:

someService.findById(SomeMother.SOME_OBJECT.id) >> SomeMother.SOME_OBJECT 
someService.findById(_) >> {throw new IllegalArgumentException("No such object")} 

我寧願有這樣的代碼

Helper.register(SomeMother.SOME_OBJECT).to(someService)

,所以我不必在任何地方複製嘲諷邏輯。但是,似乎我無法改變規範之外的Mock行爲,因爲Mock只是註冊了調用,而不是意識到我想改變它的行爲。有沒有辦法做到這一點,還是我必須一遍又一遍地重複我的初始化邏輯?

回答

0

今天,在類之間共享嘲笑相關代碼的唯一方法是通過基類。一旦Spock支持Groovy 2.3 mixin,mixin就可能成爲前進的方向。

如果您發現自己共享嘲笑很多,請考慮使用虛假對象。通常,嘲笑對於手頭的測試非常具體。

相關問題