`
jy503160
  • 浏览: 20136 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

(转载)Rspec 使用笔记

 
阅读更多

打算以后使用rspec 就行测试开发,由于第一次在项目中使用,所以,记录再次,便于以后查询

本文的记录参考了开源软件 angle-nest 和 Ruby-China源码

  1. 安装gem
    1. group :development, :testdo
    2. gem 'cucumber-rails', :require => false
    3. gem 'database_cleaner'
    4. gem 'factory_girl'
    5. gem 'factory_girl_rails'
    6. gem 'rspec-rails'
    7. gem 'capybara'
    8. gem 'delorean'
    9. end
    group :development,  :test do
      gem 'cucumber-rails', :require => false
      gem 'database_cleaner'
      gem 'factory_girl'
      gem 'factory_girl_rails'
      gem 'rspec-rails'
      gem 'capybara'
      gem 'delorean'
    end
    



  2. install

    1. rails generate rspec:install
    rails generate rspec:install


  3. 运行测试
    1. rake spec
    rake spec
  4. 修改helper文件
    1. config.mock_with :rspec
    2. config.use_transactional_fixtures = false
    3. config.include Delorean
    4. DatabaseCleaner.strategy = :truncation
    5. config.before do
    6. DatabaseCleaner.clean
    7. end
      config.mock_with :rspec
      config.use_transactional_fixtures = false
    
      config.include Delorean
    
      DatabaseCleaner.strategy = :truncation
      config.before do
        DatabaseCleaner.clean
      end
    
  5. 安装watchr
    1. gem 'watchr'
    gem 'watchr'
  6. 新建.watchr文件
    1. def run_spec(file)
    2. unlessFile.exist?(file)
    3. puts "#{file} does not exist"
    4. return
    5. end
    6. puts "Running #{file}"
    7. system "bundle exec rspec #{file}"
    8. puts
    9. end
    10. watch("spec/.*/*_spec.rb") do |match|
    11. run_spec match[0]
    12. end
    13. watch("app/(.*/.*).rb") do |match|
    14. run_spec %{spec/#{match[1]}_spec.rb}
    15. end
    def run_spec(file)
      unless File.exist?(file)
        puts "#{file} does not exist"
        return
      end 
    
      puts "Running #{file}"
      system "bundle exec rspec #{file}"
      puts
    end
    
    watch("spec/.*/*_spec.rb") do |match|
      run_spec match[0]
    end
    
    watch("app/(.*/.*).rb") do |match|
      run_spec %{spec/#{match[1]}_spec.rb}
    end
    

    解析
    1. 一旦spec/目录下有以_spec.rb结尾的文件发生了改变,watchr便会自动运行run_spec 方法来对该文件进行测试。
    2. 一旦有app/目录下有.rb结尾的文件发生了改变,立即调用run_spec 方法来执行该文件所对应的spec测试文件。
    3. run_file 通过文件名来检查spec文件是否存在, 然后来运行该spec (调用 system)
        一旦spec/目录下有以_spec.rb结尾的文件发生了改变,watchr便会自动运行run_spec 方法来对该文件进行测试。
        一旦有app/目录下有.rb结尾的文件发生了改变,立即调用run_spec 方法来执行该文件所对应的spec测试文件。
        run_file 通过文件名来检查spec文件是否存在, 然后来运行该spec (调用 system)
    



  7. 运行
    1. watchr .watchr
    watchr .watchr
  8. 增加spark提升速度
    1. gem 'spork', '1.0.0rc3'
    gem 'spork', '1.0.0rc3'
  9. 运行
    1. spork --bootstrap
    spork --bootstrap
  10. 修改spec_helper.rb
    第一,上传 rubygems,因为我们已经有bundler了
    修改spec_helper.rb文件如下
    1. require 'spork'
    2. #uncomment the following line to use spork with the debugger
    3. #require 'spork/ext/ruby-debug'
    4. Spork.prefork do
    5. ENV["RAILS_ENV"] ||= 'test'
    6. require File.expand_path("../../config/environment", __FILE__)
    7. require 'rspec/rails'
    8. require 'rspec/autorun'
    9. # Requires supporting ruby files with custom matchers and macros, etc,
    10. # in spec/support/ and its subdirectories.
    11. Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
    12. RSpec.configure do |config|
    13. config.mock_with :rspec
    14. config.use_transactional_fixtures = false
    15. config.include Delorean
    16. DatabaseCleaner.strategy = :truncation
    17. config.before do
    18. DatabaseCleaner.clean
    19. end
    20. end
    21. end
    22. Spork.each_run do
    23. # This code will be run each time you run your specs.
    24. end
    require 'spork'
    #uncomment the following line to use spork with the debugger
    #require 'spork/ext/ruby-debug'
    
    Spork.prefork do
      ENV["RAILS_ENV"] ||= 'test'
      require File.expand_path("../../config/environment", __FILE__)
      require 'rspec/rails'
      require 'rspec/autorun'
    
      # Requires supporting ruby files with custom matchers and macros, etc,
      # in spec/support/ and its subdirectories.
      Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
    
      RSpec.configure do |config|
        config.mock_with :rspec
        config.use_transactional_fixtures = false
        config.include Delorean
    
        DatabaseCleaner.strategy = :truncation
        config.before do 
          DatabaseCleaner.clean
        end
      end
    end
    
    Spork.each_run do
      # This code will be run each time you run your specs.
    
    end
  11. 修改.rspec文件,增加如下代码
    1. --drb
    --drb
  12. 运行spork
    1. spork
    spork
  13. 在运行 watchr .wtachr 速度加快了
  14. 清除test环境下的缓存,编辑config/environments/test.rb
    1. config.cache_classes = false
分享到:
评论

相关推荐

    使用RSpec 测试Rails 程序.pdf

    ### 使用RSpec 测试Rails 程序的知识点总结 #### 一、RSpec与Rails结合的基础概念 **RSpec**(RSpec is not a unit testing framework)是一种为Ruby编程语言设计的行为驱动开发(BDD)框架,而**Rails**是基于...

    rspec 入门者学习

    它可以与 RSpec 结合使用,利用 Gherkin 语法编写用户故事,并使用 RSpec 进行验证。 - 示例: ```gherkin Feature: Login feature Scenario: Log in as a registered user Given I am on the login page When...

    the rspec book.pdf

    《RSpec Book》是一本专注于Rspec的权威指南,它详细阐述了如何使用Rspec这个强大的测试框架进行行为驱动开发(BDD)。Rspec是Ruby编程语言中的一个测试库,它使得编写可读性强、表达力丰富的测试代码成为可能。这...

    rspec测试.pdf

    《RSpec测试:行为驱动开发与RSpec、Cucumber及其他工具》 RSpec是一种用于Ruby语言的单元测试框架,它提倡一种称为...对于任何使用Ruby进行软件开发的团队来说,掌握RSpec都是提升开发效率和项目质量的关键技能之一。

    RSpec 3.1中文版

    综上所述,RSpec 3.1中文版是一本针对Rails开发者,特别是希望学习或提高其RSpec使用技能的开发者的实践指南。它不仅涵盖了RSpec的安装与基础使用,还包括了在Rails应用中实现TDD的具体方法和技巧,以及如何有效地将...

    Pragmatic.The RSpec Book.2010.pdf

    1. **灵活的语法**:RSpec 允许使用自定义匹配器来描述期望的行为,这使得测试代码更加直观。 2. **易于理解**:RSpec 的输出非常人性化,即使是非技术人员也能轻松阅读并理解测试结果。 3. **支持多种环境**:RSpec...

    rspec測試工具書

    Rspec是一种行为驱动开发(Behavior-Driven Development,简称BDD)工具,它在软件测试领域被广泛使用。其目的是通过描述软件行为来提高开发人员与非技术团队成员之间的沟通效率。Rspec允许开发者编写一个可读性很强...

    使用Cucumber+Rspec玩转BDD全集.rar

    在他们下载的chm始终打不开或有问题。 ... 使用Cucumber+Rspec玩转BDD(1)——用户注册 使用Cucumber+Rspec玩转BDD(2)——邮件激活 ...使用Cucumber+Rspec玩转BDD(3)——用户...使用Cucumber+Rspec玩转BDD(7)——测试重构

    jruby-1.5.5+OperaWatir+RSpec

    标题 "jruby-1.5.5+OperaWatir+RSpec" 暗示了这是一个关于使用 JRuby 1.5.5 版本、OperaWatir 和 RSpec 进行自动化测试的项目或者资源集合。现在,我们将深入探讨这三个关键组件以及它们在 IT 领域中的应用。 JRuby...

    rspec_api_documentation, 从RSpec自动生成API文档.zip

    rspec_api_documentation, 从RSpec自动生成API文档 RSpec Doc为你的Rails API生成漂亮的。查看一个示例文件。更改请查看维基以了解最新的更改。安装将rspec_api_documentation添加到你的文件gem 'rspec_a

    rspec-collection_matchers, 集合基数匹配器,从rspec期望中提取.zip

    rspec-collection_matchers, 集合基数匹配器,从rspec期望中提取 RSpec::CollectionMatchers RSpec::CollectionMatchers 让你在一个例子中表达一个对象集合的预期结果。expect(account.shopping_cart).to have_

    RSpec.Essentials

    ### RSpec Essentials: Key Insights and Learning Points **RSpec Essentials** is an essential guide for developers looking to enhance their skills in testing Ruby applications using the RSpec framework...

    The.RSpec.Book

    - **社区资源**:RSpec 拥有一个活跃的社区,提供了大量的文档、教程和示例代码,可以帮助开发者更快地掌握RSpec的使用方法。 - **官方文档**:RSpec 官方文档是学习RSpec的最佳起点,其中包含了详细的安装指南、...

    The Rspec Book 最新版 (带Cucmber章节) - 最好的BDD书籍

    RSpec是Ruby社区广泛使用的BDD框架,它提供了一种简洁、表达性强的方式来编写测试代码。在RSpec中,开发者可以使用自然语言描述测试用例,使得非技术人员也能理解测试的目的。RSpec支持模拟对象、期望断言和DSL...

    rspec-setup-rails:如何使用 Rspec 快速设置导轨

    ##在 Rails 中快速设置 RSpec,使用 Capybara、Factory Girl、Database Cleaner、Shoulda-matchers 等... 在命令行中,运行rails new app_name -T (关闭默认测试单元) 将 Gems 添加到 gemfile,然后捆绑。 gem '...

    rspec-dns, 使用RSpec轻松测试你的DNS.zip

    rspec-dns, 使用RSpec轻松测试你的DNS rspec-dns rspec是一个rspec插件,用于方便的DNS测试。 它使用dnsruby而不是标准库来解析名称解析。安装如果你正在使用 bundler,请将此行添加到你的应用程序的Gemfile 中:gem

    在rails中 使用RSpec生产CHM文档

    标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...

    rspec-api-blueprint-formatter, 从RSpec测试自动生成API文档 !.zip

    rspec-api-blueprint-formatter, 从RSpec测试自动生成API文档 ! RSpec APIBlueprint格式化程序从RSpec测试自动生成API文档 !像这样it 'retrievs the patients medications' do retrieve_medications

Global site tag (gtag.js) - Google Analytics