Play 2.0 中文资料 - 编写测试


Unmi 注: 当你采用 TDD 进行开发过一段时间后,很快你就会对 TDD 产生依恋了。没直正去实践过 TDD,对于测试先行的提法只会觉得是一种理想状态。其实不然,从此开发模式变成 测试->实现->重构,同时也指导你的设计,基础架构并不需要那么稳定,它总在应需而变。所以 TDD 让你不该总在项目中后期抱怨架构设计不好之类的事,因为主动权一直在你。废话一堆后就是:测试真的很重要,尽快进入角色吧。

测试你的应用程序

测试源代码文件必须放置在你的应用的 test 目录下. 你可以在 Play 控制台下用  testtest-only 任务来运行它们.

使用 specs2

测试一个 Play 2 应用默认的方式是采用 specs2.

单元规格须继承自 org.specs2.mutable.Specification 特质并应用 should/in 的格式:
 1import org.specs2.mutable._
 2
 3import play.api.test._
 4import play.api.test.Helpers._
 5
 6class HelloWorldSpec extends Specification {
 7
 8  "The 'Hello world' string" should {
 9    "contain 11 characters" in {
10      "Hello world" must have size(11)
11    }
12    "start with 'Hello'" in {
13      "Hello world" must startWith("Hello")
14    }
15    "end with 'world'" in {
16      "Hello world" must endWith("world")
17    }
18  }
19}
在虚构的应用中运行

假如你的测试代码需求依赖一个运行中的应用, 你可以轻易的立马创建一个 FakeApplication:
 1"Computer model" should {
 2
 3  "be retrieved by id" in {
 4    running(FakeApplication()) {
 5
 6      val Some(macintosh) = Computer.findById(21)
 7
 8      macintosh.name must equalTo("Macintosh")
 9      macintosh.introduced must beSome.which(dateIs(_, "1984-01-24"))
10
11    }
12  }
13}
你还能传递 (或覆盖) 掉虚构应用的附加的配置信息, 或者模拟(mock) 任何的插件. 例如,创建一个 FakeApplication 并默认使用内存数据库:
1FakeApplication(additionalConfiguration = inMemoryDatabase())
永久链接 https://yanbin.blog/play2-0-tutorials-cn-writing-tests/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。