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/

摘自:

rails 3 使用 cucumber 和rspec 進行 測試相关推荐

  1. matlab fir工具箱,用MATLAB信號處理工具箱進行FIR濾波器設計的三種方法

    摘  要 介紹了利用MATLAB信號處理工具箱進行FIR濾波器設計的三種方法:程序設計法.FDATool設計法和SPTool設計法,給出了詳細的設計步驟,並將設計的濾波器應用到一個混和正弦波信號,以驗 ...

  2. 利用BADI ME_PROCESS_PO_CUST進行PO check

    BADI ME_PROCESS_PO_CUST當中有一個method CHECK可以進行整個PO的檢查. 要注意的是parameter只有IM_HEADER,並且是object形態. 以下是取得內容的 ...

  3. python使用opencv_教你快速使用OpenCV/Python/dlib進行眨眼檢測識別!

    摘要: 影象識別的新思路:眼睛縱橫比,看看大牛如果用這種思路玩轉識別眨眼動作! 今天我們來使用面部標誌和OpenCV 檢測和計算視訊流中的眨眼次數.為了構建我們的眨眼檢測器,我們將計算一個稱為眼睛縱橫 ...

  4. python rs232_使用Python進行RS-232通信返回垃圾信息

    我最近試圖通過RS-232連接控制OceanOptics HR4000光譜儀.我已經使用串行控制檯Termite測試了串行命令(這裏提供:http://www.oceanoptics.com/tech ...

  5. airflow 進行後端大數據中ETL處理(草稿)

    情境說明: 公司接了外部的數據源,要把資料同步到gcp雲端來,資料表很多 ,我們使用了多種方式把資料寫入到我們公司位於gcp上的bigquery 資料表 問題 資料表很多樣,不同的資料表有不同的ETL ...

  6. [心得] 如何利用liquibase進行資料庫版本控制 - 實際練習

    透過上一篇的基本觀念介紹,希望大家應該有一點點感覺了! 這篇我們就來做個簡單的版本演練,加深印象吧! 我使用的環境如下 System : Windows 7 Database : SQL Server ...

  7. 使用Arrays sort 方法進行排序

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! impo ...

  8. html中md5如何使用方法,html中使用js進行登錄md5加密提交並重定向新頁面

    在web開發中有時需要將用戶的一些信息在客戶端加密后進行提交,然后在web后端進行驗證,可以提高頁面傳輸過程中的安全性.本例實現一個簡單的加密登錄demo,例子僅僅為了演示使用,實際使用時可以根據實際 ...

  9. mysql+分表+1168,MySQL使用MERGE進行分表實現

    使用MERGE進行分表: 發現一個MERGE表一直出現Unable to open underlying table which is differently defined or of non-My ...

最新文章

  1. numpy维度交换_numpy之转置(transpose)和轴对换
  2. 细节无处不在!东莞网络推广分享哪些操作会影响网站优化效果?
  3. 20175221 MyCP(课下作业,必做)
  4. hiveql笔记(一)
  5. 动画都要用计算机图形学吗,计算机图形学在电影和动画中的应用.pdf
  6. java oracle临时表,JdbcTemplate操作oracle的临时表
  7. session-cookie 和token登录验证
  8. 提交显示成功但是没有看到文件_如何向RTThread提交一个BSP?
  9. 用 Java 写一个植物大战僵尸简易版
  10. CentOS 系列安装 Docker
  11. 计算机的精度论文,计算机辅助机械零件精度设计毕业论文
  12. mysql5.7 之 sql_mode=only_full_group_by问题
  13. 凑零钱动态规划java_动态规划巧解凑零钱问题 | 创作者训练营
  14. webpack 了解
  15. 利用客户端cookie保存用户信息
  16. Collections 常用方法
  17. 平衡二叉树、B树、B+树,B*树的区别与联系
  18. 浏览器火狐3.0发布之盛况
  19. 北京市工作居住证的申请与办理
  20. Matlab:连续按键、移动鼠标、鼠标点击、鼠标连点、输入字符,10行代码即可。

热门文章

  1. Python元组常用的操作
  2. 关于RabbitMq你必须深入理解的内容
  3. 抽象语法树 Abstract syntax tree
  4. Linux 小知识翻译 - 「架构」(arch)
  5. 【selenium 3】 Mac 下测试环境搭建 Firefox 47+ gecko driver Mac
  6. 毕业论文查重心得体会—吐血奉献
  7. 十天学会php之第五天
  8. linux常见问题解答汇总
  9. sys_guid 点滴用法
  10. CZoneSoft出品: 音频视频在线录制系列之 AV留言本 简介