5

在我的MockWebServer我使用两个不同的调度程序。一种LocalResponseDispatcher用于本地添加响应,另一种用于将QueueDispatcher一些存根响应排队。我在两个之间切换时遇到了问题。事实上,当我尝试使用.setDispatcher()网络服务器答案时,总是与前一个响应一起使用。你有同样的问题吗?

4

1 回答 1

2

我有类似的问题。每个测试都是单独进行的,但对于不止一个测试,只有第一个完成了他的工作。我发现,我的问题出在不同的地方。当您使用 MockWebServer 时,请记住,如果您在@Before方法 中执行,mockWebServer.url()则 API 的端口对于每个测试几乎总是不同的。url 中的端口号发生变化,例如。从http://localhost:58919/http://localhost:52915/

我的问题是我只用 url 实例化了我的 API 一次。这通常是个好主意,因为您的 API url 在您的应用程序工作期间不会更改。解决方案是提供setBaseUrl(String url)TestApplication extends Application(使用适当的自定义 jUnit 运行器)最终重新创建您的 API:在我的示例中,我重新实例化了 Retrofit 和 API - 测试开始像魅力一样工作。

于 2017-05-15T01:36:59.467 回答