rspec + guard + spork +database_clean+selenium

在gemfile 中 加入 如下文件

 group :development, :test do
   gem "rspec-rails", "~> 2.14.0" #封装 RSpec 的程序,还包含了一些专为 Rails 提供的功能
   gem "factory_girl_rails", "~> 4.2.1" #预构件
end

group :development do
  gem 'guard-rspec', '~> 3.0.2'  #
  gem 'guard-spork', '~> 1.5.1'
  gem 'spork-rails', github: 'sporkrb/spork-rails'
  gem 'rb-fsevent', '~> 0.9.3'
end

group :test do
  gem 'capybara', '2.1.0'   #便于模拟用户和程序的交互操作
  gem "faker", "~> 1.1.2" #为预构件生成名字、Email 地址以及其他的示例数据
  gem "database_cleaner", "~> 1.0.1"#清理“测试数据库”,确保 RSpec 中的测试用例运行于一块净土之上
  gem "launchy", "~> 2.3.0" #这个 gem 的功能只有一个,但做的很好,如果需要,它会打开系统的默认浏览器,显示应用程序当前渲染的页面。调试测试时特别有用
  gem "selenium-webdriver", "~> 2.33.0" #结合 Capybara 测试基于 JavaScript 的交互操作
end

在把测试的数据库弄起来

rake db:create:all
rake db:test:clone

设置rspec

bundle exec rails g rspec:install

把 Capybara DSL 加入 RSpec 帮助文件
spec/spec_helper.rb

config.include Capybara::DSL

在设置生成器,在config/ application.rb 中加入如下代码

config.generators do |g|
  g.test_framework :rspec,
    fixtures: true,
    view_specs: false,
    helper_specs: false,
    routing_specs: false,
    controller_specs: true,
    request_specs: false
  g.fixture_replacement :factory_girl, dir: "spec/factories"
end
  1. fixtures: true 的意思是为各模型生成测试固件(使用 Factory Girl 创建的预构件,而不是默认的固件)
  2. view_specs: false 的意思是不生成“视图测试”。本书不会介绍“视图测试”,测试界面元素我使用的是功能测试
  3. helper_specs: false 的意思是生成控制器时不生成对应的帮助方法测试文件。如果你觉得有必要,可以把这个选项设为 true,对帮助方法进行测试
  4. routing_specs: false 的意思是不生成针对 config/routes.rb 的测试文件。如果应用程序很简单,比如本书用到的程序,可以放心的跳过路由测试。不过,如果是大型程序,路由很复杂,最好还是测试一下路由
  5. g.fixture_replacement :factory_girl 告知 Rails 使用预构件代替固件,把预构件存放在 spec/factories 文件夹中

设置 guard

bundle exec guard init rspec

设置spork

bundle exec spork --bootstrap

让spork and guard 一同协作

bundle exec guard init spork

database_clean
在gemfile test中加入

  gem "database_cleaner", "~> 1.0.1"

在rspec_helper中加入

config.before :each do
  DatabaseCleaner.strategy = :truncation
  DatabaseCleaner.start
  load Rails.root + "db/seeds.rb"
end

config.after(:each) do
  DatabaseCleaner.clean
end

然后如果要测试js的话就要用到selenium
在gemfile中加入

gem 'capybara-webkit'
gem "selenium-webdriver", "~> 2.34.0"(一定要在2.34以上的版本)

然后修改spec_helper 文件

Capybara.javascript_driver = :webkit

config.before :each do
  DatabaseCleaner.strategy = :truncation
  DatabaseCleaner.start
  Capybara.current_driver = :selenium
  load Rails.root + "db/seeds.rb"
end

config.after(:each) do
  DatabaseCleaner.clean
  Capybara.use_default_driver
end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容

  • 这是一个简单的关于Rails Rspec的简单的介绍 1 安装Rspec 在Rails的配置文件Gemfile配置...
    AQ王浩阅读 26,921评论 6 28
  • 加速测试的方法 这里所说的“速度”有两层含义。 其一,当然是测试运行所用的时间。我们这个小程序的测试已经开始出现慢...
    AQ王浩阅读 950评论 0 1
  • 加速测试的方法 这里所说的“速度”有两层含义。 其一,当然是测试运行所用的时间。我们这个小程序的测试已经开始出现慢...
    AQ王浩阅读 2,519评论 1 9
  • 配置 测试/调试 环境 一本没有测试相关内容的 Ruby 的书不是完整的。如果你对发布和贡献开源项目感兴趣的话,社...
    编程青年阅读 2,383评论 1 8
  • 话说昨日,健哥让我分享下怎么用rspec写模型的测试,顿时一脸懵逼,因为只会些拳脚猫功夫,赶紧百度谷歌相关知识,七...
    严三金阅读 4,463评论 2 52