rails 3 使用 cucumber 和rspec 進行 測試

rails3使用cucumber和rspec进行测试

 
rails new blog  -d mysql  -T

group  :development:test  do
    gem  'cucumber'"~> 0.10.2"
    gem  'rspec'"~> 2.4" 
    gem  'rspec-rails''~> 2.5'
    gem  'cucumber-rails''~> 0.4.1'
    gem  'capybara''~> 0.4.1.2'
    gem  'database_cleaner''~> 0.6.6'
end

depot$rails generate rspec:install
depot$rails generate cucumber:install


bash

rails blog
sudo rake gems:install RAILS_ENV=test
script /generate cucumber
cucumber features  -n
script /generate rspec_model article title: string content:text
rake db:migrate
rake db:test:clone
script /generate rspec_controller articles index

Cucumber

Feature: Manage Articles
   In order to make a blog
  As an author
  I want to create  and manage articles
  
  Scenario: Articles List
    Given I have articles titled Pizza, Breadsticks
     When I go to the list of articles
     Then I should see  "Pizza"
     And I should see  "Breadsticks"
  
  Scenario: Create Valid Article
    Given I have no articles
     And I am on the list of articles
     When I follow  "New Article"
     And I fill  in  "Title" with  "Spuds"
     And I fill  in  "Content" with  "Delicious potato wedges!"
     And I press  "Create"
     Then I should see  "New article created."
     And I should see  "Spuds"
     And I should see  "Delicious potato wedges!"
     And I should have  1 article

config/environments/test.rb

config. gem  "rspec":lib  =>  false:version  =>  ">=1.2.2"
config. gem  "rspec-rails":lib  =>  false:version  =>  ">=1.2.2"
config. gem  "webrat":lib  =>  false:version  =>  ">=0.4.3"
config. gem  "cucumber":lib  =>  false:version  =>  ">=0.2.2"

features/step_definitions/article_steps.rb

Given  /^I have articles titled  (. + )$ /  do  |titles |
  titles. split ( ', ' ). each  do  |title |
    Article. create! ( :title  => title )
   end
end

Given  /^I have no articles$ /  do
  Article. delete_all
end

Then  /^I should have  ( [ 0 - 9 ] + ) articles?$ /  do  |count |
  Article. count. should == count. to_i
end

articles_controller.rb

def index
   @articles = Article. all
end

def new
   @article = Article. new
end

def create
   @article = Article. create! (params [ :article ] )
  flash [ :notice ] =  "New article created."
  redirect_to articles_path
end

features/support/paths.rb

def path_to (page_name )
   case page_name
  
   when  /the homepage /
    root_path
   when  /the list of articles /
    articles_path
  
   # Add more page name => path mappings here
  
   else
     raise  "Can't find mapping from \"#{page_name}\" to a path."
   end
end

index.html.erb

<%= flash [ :notice ]  %>
<%  for article  in  @articles  %>
  <p> <%=h article. title  %></p>
  <p> <%=h article. content  %></p>
<%  end  %>
<p> <%= link_to  "New Article", new_article_path  %></p>

http://www.sevenmike.com/2011/06/20/rails3%E4%BD%BF%E7%94%A8cucumber%E5%92%8Crspec%E8%BF%9B%E8%A1%8C%E6%B5%8B%E8%AF%95/

摘自: 

转载于:https://www.cnblogs.com/ToDoToTry/archive/2011/10/22/2221439.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值