首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建功能测试ScalaPlayFramework2.6Macwire

创建功能测试ScalaPlayFramework2.6Macwire
EN

Stack Overflow用户
提问于 2018-05-08 19:57:31
回答 1查看 138关注 0票数 0

我编写了一些特性,将其用作功能测试的基础。

此文件用于在内存中创建DB (H2 +演化)

BlogApiDBTest.scala

代码语言:javascript
复制
package functional.common

import play.api.db.Databases
import play.api.db.evolutions.Evolutions

trait BlogApiDBTest {

  implicit val testDatabase = Databases.inMemory(
    name = "blog_db",
    urlOptions = Map(
      "MODE" -> "MYSQL"
    ),
    config = Map(
      "logStatements" -> true
    )
  )

  org.h2.engine.Mode.getInstance("MYSQL").convertInsertNullToZero = false
  Evolutions.applyEvolutions(testDatabase)
}

在这里,我将一些注入的组件用于测试目的。

BlogApiComponentsTest.scala

代码语言:javascript
复制
package functional.common

import common.BlogApiComponents
import org.scalatestplus.play.components.WithApplicationComponents
import play.api.{BuiltInComponents, Configuration}

trait BlogApiComponentsTest extends WithApplicationComponents with BlogApiDBTest {

  override def components: BuiltInComponents = new BlogApiComponents(context) {
    override lazy val configuration: Configuration = context.initialConfiguration
    override lazy val blogDatabase = testDatabase
  }

}

这是函数测试的基类。

BlogApiOneServerPerTestWithComponents.scala

代码语言:javascript
复制
package functional.common

import org.scalatestplus.play.PlaySpec
import org.scalatestplus.play.components.{OneServerPerTestWithComponents}

trait BlogApiOneServerPerTestWithComponents extends PlaySpec with OneServerPerTestWithComponents with BlogApiComponentsTest {

}

最后,我试图执行的测试

PostControllerSpec.scala

代码语言:javascript
复制
package functional.controllers

import functional.common.BlogApiOneServerPerTestWithComponents
import org.scalatest.concurrent.{IntegrationPatience, ScalaFutures}
import play.api.mvc.{Results}
import play.api.test.{FakeRequest, Helpers}


import play.api.test.Helpers.{GET, route}

class PostControllerSpec extends BlogApiOneServerPerTestWithComponents
  with Results
  with ScalaFutures
  with IntegrationPatience {

  "Server query should" should {
    "provide an Application" in {
      val Some(result) = route(app, FakeRequest(GET, "/posts"))
      Helpers.contentAsString(result) must be("success!")
    }
  }

}

然后我得到

blog-api/test/functional/controllers/PostControllerSpec.scala:18:31:不能将play.api.mvc.AnyContentAsEmpty.type的实例写入HTTP响应。尝试定义一个Writeableplay.api.mvc.AnyContentAsEmpty.type

这是代码

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-08 20:23:47

添加以下导入将使其工作:

代码语言:javascript
复制
import play.api.test.Helpers._

查看route的签名

代码语言:javascript
复制
def route[T](app: Application, req: Request[T])(implicit w: Writeable[T]): Option[Future[Result]]

我们看到它期望有一个implicit w: Writeable[T]。上述导入将通过写字提供

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50241382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档