【发布时间】:2012-11-23 08:05:15
【问题描述】:
将 Cucumber 用于 BDD (CS169.x1@edX) 时,会返回以下消息以响应“cucumber features/filter_movie_list.feature”的执行:
When I uncheck the following ratings: G, PG-13 # features/step_definitions/movie_steps.rb:44
Undefined step: "When I uncheck "ratings_G"" (Cucumber::Undefined)
./features/step_definitions/movie_steps.rb:52:in `block (2 levels) in <top (required)>'
./features/step_definitions/movie_steps.rb:49:in `each'
./features/step_definitions/movie_steps.rb:49:in `/I (un)?check the following ratings: (.*)/'
features/filter_movie_list.feature:30:in `When I uncheck the following ratings: G, PG-13'
...
You can implement step definitions for undefined steps with these snippets:
When /^When I uncheck "(.*?)"$/ do |arg1|
pending # express the regexp above with the code you wish you had
end
有问题的特定配置在“features/filter_movie_list.feature”中有一个声明性步骤:
当我取消选中以下评级时:G、PG-13
尝试实现“features/step_definitions/movie_steps.rb”中的声明性步骤(以重用“features/step_definitions/web_steps.rb”的命令式步骤),如下所示:
When /I (un)?check the following ratings: (.*)/ do |uncheck, rating_list|
step "When I uncheck \"ratings_G\""
和一个有效的 'features/step_definitions/web_steps.rb' 文件(即,在 gem 安装后由 'rails generate cucumber_rails_training_wheels:install' 创建的文件),具有如下命令式默认步骤:
When /^(?:|I )uncheck "([^"]*)"$/ do |field|
check(field)
end
此外,Cucumber 似乎可以访问“features/step_definitions/web_steps.rb”,因为将When I uncheck "ratings_G" 添加到“features/step_definitions/movie_steps.rb”成功;有人知道可能导致这种行为的原因吗?声明性步骤的实现甚至已经被简化,因此不会发生变量替换...
【问题讨论】:
标签: ruby-on-rails ruby cucumber