##简介##
OSChina 的链接 Cucumber
ruby 的 BDD框架,类似自然语言的DSL,适用于BDD模式和验收测试。
Book
本系列所有内容取自The Rspec Book 虽标记原创 但其实我只是翻译总结了一下
##Ready##
Gemfile:
<!-- lang: ruby -->
group :test do
gem 'rspec-rails'
gem 'cucumber-rails'
#下面这俩都是验收测试用的 模拟浏览器操作 没有太大区别 自己选用吧
gem 'capybara'
#gem 'webrat'
gem 'factory_girl_rails' #假数据生成
gem 'database_cleaner' #运行之后清空数据库
end
Install
<!-- lang: ruby -->
$rails g cucumber:install
##Visit Home Page##
features/home_pages.feature
<!-- lang: ruby -->
#language: zh-CN
功能: 未登录用户的访问
作为一个未登录用户
不登录的访问
应该访问到首页或者固定页面
场景大纲: 访问基本界面
假如 我访问 "<page>"
那么 我应该看到 "<content>"
例子:
|page |content |
|/home |My Home Page |
|/about |My About Page|
|/something|My Home Page |
features/step_definitions/home_step.rb
<!-- lang: ruby -->
#encoding: utf-8
Before do #这里是使用fixtures数据的方法,使用factory_girl也很简单 fixtures有点不一样 就没用factory_girl
ActiveRecord::Fixtures.reset_cache
fixtures_folder = File.join(Rails.root, 'spec', 'fixtures')
fixtures = Dir[File.join(fixtures_folder, '*.yml')].map {|f| File.basename(f,
ActiveRecord::Fixtures.create_fixtures(fixtures_folder, fixtures)
end
假如 /^我访问 "(.*?)"$/ do |arg1|
puts "link:#{arg1}"
visit arg1
end
那么 /^我应该看到 "(.*?)"$/ do |arg1|
page.should have_content(arg1)
end
visit page 等方法来自capybara,具体使用方法需要参考capybara
spec/fixtures/pages.yml
<!-- lang: ruby -->
one:
link: home
title: 首页
content: My Home Page
page:
level: 0
two:
link: about
title: 关于
content: My About Page
page:
level: 1
运行:$rake cucumber
在Rails中使用Cucumber并没有太大区别,主要是结合假数据生成,webrat等方法的一起使用。
##To Be Continued##
Cucumber 源码查看(一)
Cucumber 源码查看(二)
Cucumber 总结