Unmi 注: 当你采用 TDD 进行开发过一段时间后,很快你就会对 TDD 产生依恋了。没直正去实践过 TDD,对于测试先行的提法只会觉得是一种理想状态。其实不然,从此开发模式变成 测试->实现->重构,同时也指导你的设计,基础架构并不需要那么稳定,它总在应需而变。所以 TDD 让你不该总在项目中后期抱怨架构设计不好之类的事,因为主动权一直在你。废话一堆后就是:测试真的很重要,尽快进入角色吧。
测试你的应用程序
测试源代码文件必须放置在你的应用的 test
目录下. 你可以在 Play 控制台下用 test
和 test-only
任务来运行它们.
使用 specs2
测试一个 Play 2 应用默认的方式是采用 specs2.
单元规格须继承自 org.specs2.mutable.Specification
特质并应用 should/in 的格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import org.specs2.mutable._ import play.api.test._ import play.api.test.Helpers._ class HelloWorldSpec extends Specification { "The 'Hello world' string" should { "contain 11 characters" in { "Hello world" must have size(11) } "start with 'Hello'" in { "Hello world" must startWith("Hello") } "end with 'world'" in { "Hello world" must endWith("world") } } } |
在虚构的应用中运行
假如你的测试代码需求依赖一个运行中的应用, 你可以轻易的立马创建一个 FakeApplication
:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
"Computer model" should { "be retrieved by id" in { running(FakeApplication()) { val Some(macintosh) = Computer.findById(21) macintosh.name must equalTo("Macintosh") macintosh.introduced must beSome.which(dateIs(_, "1984-01-24")) } } } |
你还能传递 (或覆盖) 掉虚构应用的附加的配置信息, 或者模拟(mock) 任何的插件. 例如,创建一个 FakeApplication
并默认使用内存数据库:
1 |
FakeApplication(additionalConfiguration = inMemoryDatabase()) |
本文链接 https://yanbin.blog/play2-0-tutorials-cn-writing-tests/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。