Rails4新项目的测试:minitest + capybara测试基于devise的用户注册
23 Nov 2015
没有测试就会让写程序的开发者没有自信
这次的新项目没有想当然的选择之前一直在用Rspec测试框架,主要是我感觉Rspec里面有太多的magic,在helper文件中很多tricks, 很快相关的配置文件就非常大。这篇Blog说的跟我的体会很像 7 REASONS I’M STICKING WITH MINITEST AND FIXTURES IN RAILS
minitest是Rails4后默认支持的测试框架,另外rails也提供了很多方便和强大的assert方法。可以参考官方文档
下面我就总结和分享一下,Rails4新项目中minitest和capybara的集成和配置:
Gemfile
minitest-reporters
是为了美化minitest的测试结果输出地,有颜色,有百分比。
mocha
是一个方便进行mock和stub的工具
- 其他几个都是跟capybara相关的工具,具体会在配置中看到。
test_helper中添加的配置内容
在这里创建一个继承自新ActionDispatch::IntegrationTest的FeatureTest类,然后引入Capybara::DSL,作为Feature测试的父类。
测试确认邮件
如果要测试邮件的内容,内容中一般都会有链接,所以需要在config/environments/test.rb中加上:
如果使用了delayed_job可以在其配置中加上:
表明测试环境下,邮件任务都是直接发送出去的
用户注册和确认邮件测试的样例代码
在test目录下面,新建features目录,专门存放网站功能测试代码
test/features/user_authentication_test.rb
所以可以看到用minitest写的代码都非常直接,都是纯ruby代码。等代码增多后,可以按照ruby的方式来组织,重用和重构。