web-services - 我如何使用 Play Framework 的 FakeApplication 来通过 play 的 WS 对象停止对 Web 服务的调用?

标签 web-services scala testing playframework-2.1 functional-testing

我正在编写一些功能测试,但我想测试与其他 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/

相关文章:

android - 易趣 API 过滤器不工作

ios - 从主视图 Controller iOS 访问已解析的 JSON 数据

scala - Scala 中的函数断言

testing - 用于 Web REST API 测试的 Selenium 与 XmlUnit+HttpClient

测试 XQuery 和 Marklogic 事务

java - JAX-WS 和 Spring 运行时建模器错误

java - 在 restful web 服务中访问 HttpServletRequest 对象

Scala 错误 : type exists, 但它没有伴随对象

scala - 如何比较两个对象并要求它们具有相同的类型?

testing - 通过 nosetests 测试 Flask 应用程序时,如何发送带有请求的 cookie?