【问题标题】:Scala Play2 router/controller test without hitting databaseScala Play2 路由器/控制器测试,无需访问数据库
【发布时间】:2015-10-07 18:02:10
【问题描述】:

我有一个通过路由器的简单控制器测试:

 "returns all reservations" should {
    running(FakeApplication()) {
      val Some(result) = route(FakeRequest(GET, "/reservations?envId=560d89ec5393af5d00bcfdf1"))

      mustBeValidResponse(result)
      contentAsString(result) must contain("environmentId")
    }
  }

但正如您所见,它需要一个 ID 作为 URL 的一部分,这意味着我的测试依赖于数据库中的数据,这是不好的。如何创建测试将运行的夹具或其他东西,以便测试运行而不实际依赖数据库中的数据?

【问题讨论】:

    标签: scala playframework specs2 playframework-2.4


    【解决方案1】:

    我假设访问数据库的代码不是直接在控制器中,而是在另一个注入到控制器的类中。您应该使用 Play 2.4 版中引入的模块系统。然后你需要的是替换通过模拟访问数据库的真实实现。更多信息在这里: https://www.playframework.com/documentation/2.4.x/ScalaTestingWithGuice#Overriding-bindings-in-a-functional-test

    【讨论】:

    • 你是对的,有一个数据库管理器。我会看看你链接到的文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    相关资源
    最近更新 更多