修改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'
执行