一些开发心得

1.   在集成测试的时候,使用rspec + Capybara, 不要使用cucumber, 因为cucumber 和 Rspec 是两个不同的模式, 对于以后的维护,你要写两份程序。

      而且Cucumber消耗更多的memory, 最后就是capybara 更多的倾向于acceptance test. 一般公司都是不需要的。


2. 使用Capybara 需要配合使用  launchy 


否则无法使用save_and_open_page 的功能


3. 如果只使用capybara 是无法对javascript 进行测试的。 因为Javascipt需要一个解释器(比如说浏览器). 那么如何使用Capybara 去测试了

很简单在程序中加入 

:js => true

比如下面的程序

it "supports js", :js => true do
  visit tasks_path
  click_link "test js"
  page.should have_content("js works")
end

这样在 执行测试的时候, 由于默认的驱动就是selenium, 系统会自动打开浏览器进行测试。 


4. 使用Capybara 外加 selenium 有比较多的缺点, 第一就是需要安装浏览器, 很麻烦吧。。 第二执行速度又慢。 消耗很多的资源。

没有console.log output, 不可见的javascript errors 等等

具体的可以看这里 http://www.slideshare.net/bostonrb/capybarawebkit


5. 使用浏览器去执行Javascript, 很不划算。 所以就有人发明了一个库,取名叫webkit  它的功能类似于浏览器, 但是比起浏览器, 它只提供一些必须的功能 比如说render, CSS ,HTML. DOM, Layout 的显示。 而且webkit h很轻。 


6. 如何使用capybara-webkit, 这里有具体的介绍

https://github.com/thoughtbot/capybara-webkit

capybara-webkit  是基于qt4库的,所以在你的Linux环境中一定要安装 libqt4-dev

$ sudo apt-get install libqt4-dev


7. 但是使用capybara-webkit, 我们还是需要浏览器, 只是这个浏览器更轻了而已。 

那能不能向rspec那样在terminal里面跑,而不需要浏览器了 这个时候,就需要headless.

那么headless 是什么了,就是不需要真正的浏览器,而是在内存空间内启动一个假想的display 去测试。

记得安装哦 

gem 'headless'

要使用headlesa 的话,一定要记得安装 

xvfb

$ sudo apt-get install xvfb

一下就是一些配置

Spork.prefork do
 

  require "headless"
  headless = Headless.new(display:99)
  headless.start
  at_exit{ headless.destroy }


  ENV["RAILS_ENV"] ||= 'test'
  require File.expand_path("../../config/environment", __FILE__)
  require 'rspec/rails'
  require 'rspec/autorun'

  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

  RSpec.configure do |config|
    config.use_transactional_fixtures = true
    config.infer_base_class_for_anonymous_controllers = false

   
    config.treat_symbols_as_metadata_keys_with_true_values = true
    config.filter_run :focus => true
    config.run_all_when_everything_filtered = true

  
    config.before :suite do
      DatabaseCleaner.strategy = :truncation
      DatabaseCleaner.clean_with :truncation
    end

    config.before :each do
      if example.metadata[:js]
        self.use_transactional_fixtures = false
        DatabaseCleaner.start
      end
    end

    config.after :each do
      if example.metadata[:js]
        DatabaseCleaner.clean
        self.use_transactional_fixtures = true
      end
    end
  end

  Capybara.javascript_driver = :webkit  
end

Spork.each_run do
  FactoryGirl.reload  
  silence_warnings do                                           
    Dir[Rails.root.join('app/**/*.rb')].each{ |file| load file } # 
  end                                                            #
end


 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值