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! (now write some real specs)" do
# Run the generator again with the --webrat flag if you want to use webrat methods/matchers
get static_pages_index_path
response.status.should be(200)
end
end
end
3.写一个测试首页内容的测试:
require 'spec_helper'
describe "Static pages" do
describe "Home page" do
it "should have the content 'Sample App'" do
visit '/static_pages/home'
expect(page).to have_content('Sample App')
end
end
end
4若要测试正确运行,我们要在 spec_helper.rb 中加入一行代码
RSpec.configure do |config|
.
.
.
config.include Capybara::DSL
end
5.运行测试:
bundle exec rspec spec/requests/static_pages_spec.rb
可以看到我们的测试是失败的,因为首页是系统为我们生成的,不包含测试通过所需要的“Sample App”
将其修改便可以使得测试通过,这就是BDD,行为驱动测试,先写失败的测试,不断改进,使之成功。
如果写一个有关“About”页面的测试,开始提示路由失败,我们添加路由,提示action找不到错误,继续添加action,发现缺少模板,添加相关页面文件,最后测试变绿
本文介绍如何在Rails项目中使用RSpec进行行为驱动开发(BDD),包括配置RSpec、生成静态页面的集成测试、编写针对具体页面内容的测试案例,并逐步解决测试过程中出现的问题。
3084

被折叠的 条评论
为什么被折叠?



