`

BDD rspec with rails3 project

阅读更多

 

参考 源自Ruby迷
>>原文链接地址:RSpec 2 on Rails 3入门

BDD(Behavior Driven Development)行为驱动开发现在很火,因此RSpec也非常流行。

RSpec是一个基于Ruby的BDD行为测试框架,在Rails中,很多人用它来代替默认的测试框架Test::Unit。
这是一篇RSpec入门文章。

一、创建项目

#创建项目,不生成Test:Unit测试代码

rails new rspec_demo --skip-test-unit

二、在Rails中加入RSpec-Rails

1、修改Gemfile

gem 'rspec-rails', :group => [:development, :test]

2、安装Gem

bundle install

3、生成RSpec框架代码

rails generate rspec:install

会自动创建下面文件:

.rspec – 用于配置 rspec 命令行的配置文件,默认包含 – colour 来启用RSpec输出文字高亮。
spec – 该目录用于存放所有模型变量,控制器,视图,和项目中其它的specs。
spec/spec_helper.rb – 该文件会在每个spec执行时被调用。该文件设置了测试变量,并包含项目级别RSpec配置项,加载引用文件等等。

三、创建用于测试的Model

rails generate scaffold Post title:string context:text

会生成如下文件:

#创建model的测试
create spec/models/post_spec.rb
#创建controller的测试
create spec/contollers/posts_controller_spec.rb
#创建view的测试
create spec/views/posts/edit.html.erb_spec.rb
create spec/views/posts/index.html.erb_spec.rb
create spec/views/posts/new.html.erb_spec.rb
create spec/views/posts/show.html.erb_spec.rb
#创建helper的测试
create spec/helpers/posts_helper_spec.rb
#创建route的测试
create spec/routing/posts_routing_spec.rb
#创建请求的测试
create spec/requests/posts_spec.rb

rake db:migrate
生成数据库

常用的RSpec相关命令:

rake spec #执行所有测试

rake spec:models #只执行models的测试

rake spec/models/mymodel_spec.rb # 只测试一个文件

四、自己写测试

与TDD类似,步骤如下:写测试–>执行测试出错–>写代码–>通过测试
1、写测试

# spec/models/post_spec.rb
require 'spec_helper'

describe Post do

  before(:each) { @post = Post.new }
  subject { @post }
  it { should be_a_kind_of ActiveRecord::Base }

  context "when title is blank" do
    before { @post.title = "" and @post.save }
    subject { @post }
    it { should have(1).errors_on(:title) }
  end

  context "when title is not blank" do
    before { @post.title = "rubyer.me" and @post.save }
    subject { @post }
    it { should have(0).errors_on(:title) }
  end

end

执行测试

rspec spec/models/post_spec.rb

#Finished in 24.88 seconds
#3 examples, 1 failures, 2 passed

修改代码

class Post < ActiveRecord::Base
  validates_presence_of :title
end

再次执行测试

rspec spec/models/post_spec.rb

#3 examples, 0 failures, 3 passed

测试通过,Use RSpec, Be Happy!


分享到:
评论

相关推荐

    RestFul_Rails_Dev_v_0.1

    - **RSpec**:一种流行的 BDD(行为驱动开发)框架,适用于 Rails 应用程序的测试。 - **Capybara**:一种 Web 测试工具,模拟用户的交互行为来测试应用程序。 - **Factory Bot**:用于生成测试数据,方便编写测试...

    siena_project

    此外,Siena Project可能还利用了Rails的测试框架,如RSpec或Test::Unit,进行单元测试和集成测试,确保代码质量与功能的正确性。测试驱动开发(TDD)和行为驱动开发(BDD)的理念在Rails社区中广泛推广,这也是...

    239_project:刷新后端技能并巩固230知识的项目

    6. **测试(Testing)**:Rails强调TDD(测试驱动开发)和BDD(行为驱动开发),提供了Rspec和FactoryBot等工具进行单元测试和集成测试。在239_project中,我们会学习编写测试以确保代码质量,以及如何使用测试来...

    dulevo-project:项目dulevo axima it

    同时,项目可能会利用TDD(测试驱动开发)和BDD(行为驱动开发)的方式,使用RSpec、Capybara等工具进行测试,确保代码质量。 总之,Dulevo Project是一个基于Ruby语言构建的在线教育平台,它的设计和实现充分利用...

    phase-2-passion-project

    在这个阶段,可能会涵盖如类和对象、继承、模块、异常处理、元编程等Ruby核心概念,也可能涉及测试驱动开发(TDD)和行为驱动开发(BDD)的理念,使用像RSpec这样的测试框架来确保代码质量。 “passion project”通常指...

    Apress.Practical.Ruby.Projects.Dec.2007.eBook-BBL.rar

    此外,本书可能还讨论了测试驱动开发(TDD)和行为驱动开发(BDD)在Ruby中的应用,如使用RSpec或Cucumber等工具进行自动化测试。这些测试方法对于确保代码质量、减少错误和提高开发效率至关重要。 在软件工程领域...

    ruby开发的基本流程.doc

    - **RSpec**:RSpec是一种行为驱动开发(BDD)的测试框架,它鼓励开发者以清晰的自然语言描述测试案例,使得测试文档更加易于理解和维护。 - **MiniTest**:MiniTest是Ruby自带的测试框架,提供了简单易用的接口,...

    浪潮项目

    8. **测试驱动开发**:Ruby社区强调测试的重要性,TDD(Test-Driven Development)和BDD(Behavior-Driven Development)是常见的开发实践,RSpec和MiniTest等测试框架帮助确保代码质量。 综上所述,“浪潮项目”是...

    自动化项目

    在自动化项目中,我们通常会利用Ruby的库,如Cucumber用于行为驱动开发(BDD),Selenium用于网页自动化测试,或者Rake作为构建自动化工具。Cucumber允许非技术人员通过简单的Gherkin语法来定义系统行为,使得业务...

Global site tag (gtag.js) - Google Analytics