美文网首页我爱编程
rspec + guard + spork +database_

rspec + guard + spork +database_

作者: 杜小龙 | 来源:发表于2014-01-08 15:04 被阅读187次

    在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

    相关文章

      网友评论

        本文标题:rspec + guard + spork +database_

        本文链接:https://www.haomeiwen.com/subject/tdectttx.html