模擬最終クラスをスポックできますか?もしそうなら、どのように?検索結果でこれが表示されました 要点 これはそういう意味のようですが、その例は見つかりません。また、ファイナルクラスのモックはサポートされていないというフォーラムの投稿も見つかりました。
この仕様:
@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
}
}
これはうまくいきます。