我正在编写一些功能测试,但是我想测试与其他 http 端点隔离的堆栈。
是否有一种机制可以让我说“直接 WS 调用这组预设响应”或其他一些方法来消除对无法用于自动化测试的 http 端点的调用?
或者,fakeApplication 配置如何呈现给应用程序的其余部分,因此我可以将 URL 设置为一些本地服务器,我将自己构建以提供预设响应
我正在编写一些功能测试,但是我想测试与其他 http 端点隔离的堆栈。
是否有一种机制可以让我说“直接 WS 调用这组预设响应”或其他一些方法来消除对无法用于自动化测试的 http 端点的调用?
或者,fakeApplication 配置如何呈现给应用程序的其余部分,因此我可以将 URL 设置为一些本地服务器,我将自己构建以提供预设响应
您可以创建一个模仿WS
签名的结构类型并在您的代码中使用它。
type WSLike = {
def url(url: String): WSRequestHolder
}
然后你可以注入你自己版本的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
添加正确的网址。您可以使用FakeApplication
.
FakeApplication(additionalConfiguration =
Map("my.webservice.url" -> "http://localhost/service"))