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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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