故事驱动开发实践-一次完整的使用过程

本文的例子参考 The Cucumber Book

以前一直做单元测试,虽然不够彻底,但是一直有些坚持。在实践单元测试的过程中,总是会有一种感觉,无法从需要和总体上做程序,流程总是不顺畅。也许是我实践的办法不对吧。总是无法将测试驱动开发进行到底。在追赶的项目进度面前,早点搞定,成了我的座右铭。但是项目快结束后,看着自己的代码,我总有一种欲哭无泪的感觉,总想重构代码。但不敢下手,也无从下手。谁叫我的测试代码不够彻底呢。怕修改代码后,会带来新的bug。 现在实践一下故事驱动开发。其实对故事驱动开发非常有兴趣。因为我特别喜欢故事面板,一个项目,在我看来,无非就是一个一个的故事组成的。


  1. 工具
    rails3.2
    cucumber

  2. 新建项目
    rails new squeaker --skip-test-unit


  3. 修改Gemfile文件
    group :test do  
      gem 'cucumber-rails', '1.3.0'
      gem 'database_cleaner', '0.8.0'
      gem 'rspec-rails', '2.10.0'
      gem 'factory_girl', '3.5.0'
    end
    


    bundle install

  4. create cucumber files for rails
    rails generate cucumber:install

  5. 建立ctags索引
    ctags -R --exclude=*.js --exclude=.log * . ~/.rvm/gems/ruby-1.9.2-p320/gems/

  6. 编写故事用例
    Feature: 查看消息
    
      Scenario: 查看其他用户的消息
        Given 有一个注册用户A 
        And 用户A提交了一条信息 "这是我的消息" 
        When 我访问了该用户的页面
        Then 我应该可以看到 "这是我的消息"

  7. steps 源代码
    # -*- encoding: utf-8 -*-
    Given /^有一个注册用户A$/ do
      Factory(:user)
    end
    
    Given /^用户A提交了一条信息 "(.*?)"$/ do |arg1|
      User.count.should == 1
      Factory(:message, :content => arg1, :user => User.first)
    end
    
    When /^我访问了该用户的页面$/ do
      User.count.should == 1
      visit(user_path(User.first))
    end
    
    Then /^我应该可以看到 "(.*?)"$/ do |text|
      page.should have_content(text)
    end
    



  8. factory_girl的支持
    require 'factory_girl'
    
    FactoryGirl.define do  
      factory :user do |f| 
        f.username 'testuser'
      end 
    
      factory :message do |f| 
        f.association :user
        f.content 'Test message content'
      end 
    end
    

  9. 新建两个model对象
    rails g model user username:string
    rails g model Message user_id:integer content:string

    rake db:migrate db:test:prepare
    

  10. controller 和view略

    整体结构把握好了,其他的就好做了

    Given : context 运行的上下文环境
    When : event 事件
    Then: 结果 should



  11. 资源地址:
    cucumber rails :https://github.com/cucumber/cucumber-rails
    cucumber: https://github.com/cucumber/cucumber




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值