可以模擬最終課程嗎?如果是這樣,怎麼樣?搜索結果提出了這個gist,這似乎意味着如此,但我找不到任何這樣做的例子。我還發現論壇帖子說不支持嘲笑最終課程。模擬Spock最終課程
6
A
回答
14
該規範:
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
@Grab('cglib:cglib-nodep:3.1')
import spock.lang.*
class Test extends Specification {
def 'lol'() {
given:
def s = Mock(String) {
size() >> 10
}
expect:
s.size() == 10
}
}
與以下異常結束:
JUnit 4 Runner, Tests: 1, Failures: 1, Time: 29 Test Failure:
lol(Test) org.spockframework.mock.CannotCreateMockException:
Cannot create mock for class java.lang.String because Java mocks cannot mock final classes.
If the code under test is written in Groovy, use Groovy mock.
的解決方案是使用GroovyMock
:
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
@Grab('cglib:cglib-nodep:3.1')
import spock.lang.*
class Test extends Specification {
def 'lol'() {
given:
def s = GroovyMock(String) {
size() >> 10
}
expect:
s.size() == 10
}
}
效果很好。
+0
任何想法爲什麼這不適用於String.length()? –
+0
與String.length()的區別是因爲它是在Java String類中定義的,而不是Groovy版本?這[回答](http://stackoverflow.com/a/12177035/369722)似乎是這樣建議的。 –
相關問題
- 1. 模擬Mockito 2的最終課程
- 2. 如何用Powermockito模擬最終課程?
- 3. 模擬最終課程:powermock + easymock + testng
- 4. 如何使用PowerMock模擬SBT項目中的最終課程
- 5. 使用PowerMockito.spy不能模擬/間諜最終課程()
- 6. Spock。如何模擬java.lang.Class?
- 7. 使用Spock來模擬Java中的私有靜態最終變量
- 8. 什麼是最終的內部課程?
- 9. 如何完全模擬PowerMockito的課程?
- 10. 如何模擬案例課程?
- 11. Spock塊模擬和在哪裏接線
- 12. Autowire模擬Spock在Spring中的應用
- 13. groovy spock testing模擬和返回代理
- 14. 如何在Spock中模擬HttpServletRequest
- 15. 模擬內部最終對象
- 16. 模擬繼承的最終方法
- 17. 模擬最終的新實例創建?
- 18. 電源模擬 - 嘲諷終極課堂時的斷言錯誤
- 19. 可能終止課程?
- 20. Java中的最終課程不應該是最終的,反之亦然?
- 21. 爲什麼要聲明對最終課程實例的引用是最終的?
- 22. 終止SIMPY模擬
- 23. 去哪裏最終的案例課?
- 24. 終端模擬器不產卵過程
- 25. Java程序模擬終於不叫
- 26. 如何在Rhino模擬AAA中模擬其他課程的方法調用?
- 27. PowerMockito可以在非最終具體類中模擬最終方法嗎?
- 28. 使用testng時無法繼承最終課程
- 29. 有沒有辦法給guice注入最終課程?
- 30. Android活動 - 最終課程還是不是?
有時,使用Groovy最好只是試一試。 – cjstehno
@cjstehno我試過了,得到了一個異常。但我想,也許有一種特殊的做法,我不知道。 –
我的答案能解決問題嗎? – Opal