修改Gemfile,在group: test do后添加以下几行(默认已经有capybara)

  gem 'cucumber-rails', require: false
  gem 'cucumber-rails-training-wheels'
  gem 'database_cleaner'
  gem 'launchy'

执行

bundle install

执行

gem install cucumber

执行

rails g cucumber:install capybara
rails g cucumber_rails_training_wheels:install

添加features/AddMovie.feature

Feature: User can manually add movie

Scenario: Add a movie
  Given I am on the RottenPotatoes home page
  When I follow "Add new movie"
  Then I should be on the Create New Movie page
  When I fill in "Title" with "Men In Black"
  And I select "PG-13" from "Rating"
  And I press "Save Changes"
  Then I should be on the RottenPotatoes home page
  And I should see "Men In Black"

严格意义上,我们应该画一个界面的草图,然后开始编码工作使得测试能被通过。但是因为我们前几节课已经完成了这个网站,我们这一次是事后测试,而不是测试驱动的开发。

在另一个窗口启动网站服务器

rail server

可以执行以下命令看结果

cucumber features/AddMovie.feature

可以看到结果,缺少路由,修改features/support/paths.rb,添加以下两条路径

def path_to(page_name)
    case page_name

    when /^the RottenPotatoes home page/
      '/movies'  
    when /^the Create New Movie page/
      '/movies/new'

可以发现,有个按钮,没有。原来是文本不对,修改app/views/movie/new.html.haml,将按钮的文本修改为

= submit_tag 'Save Changes'

执行