【Rails】有关TDD测试入门

来源:互联网 发布:jquery移除数组元素 编辑:程序博客网 时间:2024/06/10 04:09



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这个文件 ,内容如下:

[plain] view plaincopyprint?
  1. require 'spec_helper'  
  2.   
  3. describe "StaticPages" do  
  4.   describe "GET /static_pages" do  
  5.     it "works! (now write some real specs)" do  
  6.       # Run the generator again with the --webrat flag if you want to use webrat methods/matchers  
  7.       get static_pages_index_path  
  8.       response.status.should be(200)  
  9.     end  
  10.   end  
  11. end  

3.写一个测试首页内容的测试:

[plain] view plaincopyprint?
  1. require 'spec_helper'  
  2.   
  3. describe "Static pages" do  
  4.   
  5.   describe "Home page" do  
  6.   
  7.     it "should have the content 'Sample App'" do  
  8.       visit '/static_pages/home'  
  9.       expect(page).to have_content('Sample App')  
  10.     end  
  11.   end  
  12. end  


4若要测试正确运行,我们要在 spec_helper.rb 中加入一行代码

[plain] view plaincopyprint?
  1. RSpec.configure do |config|  
  2.   .  
  3.   .  
  4.   .  
  5.   config.include Capybara::DSL  
  6. end  

5.运行测试:

bundle exec rspec spec/requests/static_pages_spec.rb

可以看到我们的测试是失败的,因为首页是系统为我们生成的,不包含测试通过所需要的“Sample App”

将其修改便可以使得测试通过,这就是BDD,行为驱动测试,先写失败的测试,不断改进,使之成功。


如果写一个有关“About”页面的测试,开始提示路由失败,我们添加路由,提示action找不到错误,继续添加action,发现缺少模板,添加相关页面文件,最后测试变绿 



      
0 0
原创粉丝点击