我正在编写一些功能测试,但我想测试与其他 http 端点隔离的堆栈。
是否有一种机制让我说“直接 WS 调用这组固定响应”或一些其他方式来阻止对自动测试不可用的 http 端点的调用?
或者,fakeApplication 配置如何呈现给应用程序的其余部分,这样我就可以将 URL 设置到我自己构建的某个本地主机服务器以提供固定响应
最佳答案
您可以创建一个模仿 WS
签名的结构类型并在您的代码中使用它。
type WSLike = {
def url(url: String): WSRequestHolder
}
然后您可以注入(inject)您自己的 WSLike
类版本。结合模拟库,我想你可以做任何你想做的事。
关于第二个问题。你可以这样调用它:
val url = Play.current.configuration
.getString("my.webservice.url")
.getOrElse(throw new PlayException(
"Configuration error",
"Could not find my.webservice.url in settings"))
WS.url(url)
然后在您的 application.conf
中添加正确的 url。您可以使用 FakeApplication
提供不同的应用程序。
FakeApplication(additionalConfiguration =
Map("my.webservice.url" -> "http://localhost/service"))
关于web-services - 我如何使用 Play Framework 的 FakeApplication 来通过 play 的 WS 对象停止对 Web 服务的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17958354/