可能的重复:
播放中的模拟对象[2.0]
我正在学习 Scala 和 playframework,同时开发一个简单的应用程序。一件事让我很沮丧。我有很强的 C# 背景,并且习惯于用经典术语进行单元测试——模拟底层服务并只测试给定类中的代码。
问题是 - 如何对 Scala 编写的 playframework 应用程序进行单元测试?playframework 手册提出的测试方式 - 是一种集成测试,这很好,但不是我需要的东西。特别是 - 如何模拟数据访问层?
可能的重复:
播放中的模拟对象[2.0]
我正在学习 Scala 和 playframework,同时开发一个简单的应用程序。一件事让我很沮丧。我有很强的 C# 背景,并且习惯于用经典术语进行单元测试——模拟底层服务并只测试给定类中的代码。
问题是 - 如何对 Scala 编写的 playframework 应用程序进行单元测试?playframework 手册提出的测试方式 - 是一种集成测试,这很好,但不是我需要的东西。特别是 - 如何模拟数据访问层?
当您无法通过在测试之前在应用程序中加载太多依赖项来隔离测试时,通常需要创建模拟对象。当您在 Play 2.X 中测试您的数据访问层时,您没有这个限制。因此,您需要做的就是使用 Specs2Specification
并使用FakeApplication(additionalConfiguration = inMemoryDatabase()
然后可以像这样编写完整的测试:
class ProjectSpec extends Specification {
"Project model" should {
"be created with id and name" in {
running(FakeApplication(additionalConfiguration = inMemoryDatabase())) {
val beforeCount = Project.count
val project = Project.create(Project("Test name", "Test description"))
project.id must beSome
project.name must equalTo("Test name")
Project.count must equalTo(beforeCount + 1L)
}
}
}
}