在使用Spock进行单元测试的Groovy / Spring项目中首次尝试使用MockWebServer。
我按照指示添加了MockWebServer依赖项(我不得不自己添加第二行以避免错误,但是没有记录:
testImplementation("com.squareup.okhttp3:mockwebserver:4.0.0")
testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.40")
我有一个基本的Spock测试,如下所示:
def 'server'() {
setup:
MockWebServer server = new MockWebServer()
expect:
server
}
但是此输出失败:
java.lang.NoSuchMethodError: okhttp3.internal.Util.immutableListOf([Ljava/lang/Object;)Ljava/util/List;
at okhttp3.mockwebserver.MockWebServer.<init>(MockWebServer.kt:176)
我还缺少其他依赖项吗? MockWebServer是否不能与Groovy和Spock完美配合?
对于价值而言,使用3.1.4版本似乎可以正常工作:
testImplementation("com.squareup.okhttp3:mockwebserver:3.14.2")
(我是MockWebServer的首次用户)
谢谢!
答案 0 :(得分:1)
尝试添加此内容:
testImplementation("com.squareup.okhttp3:mockwebserver:4.0.0")
testImplementation("com.squareup.okhttp3:okhttp:4.0.0")
使用MockWebServer,您的OkHttp依赖项必须是相同的版本。
答案 1 :(得分:0)
我遇到了同样的问题,我找到了版本中的解决方案,只需将版本更改为“ 3.7.0”即可正常工作。
关于将版本更改为“ 3.4.1”的一些讨论,但是此版本遇到了在此问题上讨论的问题(无法从最终类继承):
https://github.com/andrzejchm/RESTMock/issues/56
所以最安全的版本是“ 3.7.0”:D
请注意,两个版本应该相同。 将您的依赖项更改为以下内容:
//mock retrofit
testImplementation("com.squareup.okhttp3:mockwebserver:3.7.0")
testImplementation("com.squareup.okhttp3:okhttp:3.7.0")
//if your source code is java
testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.40")