2

重複の可能性:
Mock Objects in Play[2.0]

簡単なアプリケーションを開発しながら、Scala と playframework を学んでいます。1つのことが私をイライラさせます。私は C# の経験が豊富で、古典的な用語での単体テスト (基礎となるサービスをモックし、特定のクラスのコードのみをテストする) に慣れていました。

問題は、Scala で記述された playframework アプリケーションを単体テストする方法です。playframework マニュアルで提案されているテストの方法は、統合テストです。これは優れていますが、私が必要とするものではありません。特に - データアクセスレイヤーをモックする方法は?

4

1 に答える 1

2

通常、モック オブジェクトの作成は、テスト前にアプリケーションにロードする依存関係が多すぎてテストを分離できない場合に必要になります。Play 2.X でデータ アクセス層をテストする場合、その制限はありません。そのため、必要なことは Specs2 を使用Specificationしてインメモリ データベースをロードすることだけです。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)
      }
    }
  }
}
于 2012-11-03T23:26:30.390 に答える