1.让 Rails 使用 RSpec 而不用 Test::Unit
rails generate rspec:install
2.为一些静态界面生成集中测试
$ rails generate integration_test static_pages
invoke rspec
create spec/requests/static_pages_spec.rb
可以很清楚的看到生成了static_pages_spec.rb这个文件 ,内容如下:
- require'spec_helper'
- describe"StaticPages"do
- describe"GET/static_pages"do
- it"works!(nowwritesomerealspecs)"do
- #Runthegeneratoragainwiththe--webratflagifyouwanttousewebratmethods/matchers
- getstatic_pages_index_path
- response.status.shouldbe(200)
- end
- end
- end
3.写一个测试首页内容的测试:
- require'spec_helper'
- describe"Staticpages"do
- describe"Homepage"do
- it"shouldhavethecontent'SampleApp'"do
- visit'/static_pages/home'
- expect(page).tohave_content('SampleApp')
- end
- end
- end
4若要测试正确运行,我们要在 spec_helper.rb 中加入一行代码
- RSpec.configuredo|config|
- .
- .
- .
- config.includeCapybara::DSL
- end
5.运行测试:
bundle exec rspec spec/requests/static_pages_spec.rb
可以看到我们的测试是失败的,因为首页是系统为我们生成的,不包含测试通过所需要的“Sample App”
将其修改便可以使得测试通过,这就是BDD,行为驱动测试,先写失败的测试,不断改进,使之成功。
如果写一个有关“About”页面的测试,开始提示路由失败,我们添加路由,提示action找不到错误,继续添加action,发现缺少模板,添加相关页面文件,最后测试变绿