ruby cucumber - 步骤未定义的消息,但步骤存在于step_definitions中

时间:2016-08-12 14:27:32

标签: ruby cucumber

我目前收到一条不寻常的错误消息,因为在运行BDD脚本期间,我在命令行运行时得到以下响应:

Feature: As a user I want to purchase a mobile on a monthly plan
@ACQ_Test_01

  Scenario: Buy a pay monthly phone
    Given I am on the Store Homepage
    When I click on the Mobile Phones roundel link
    And I select a "Apple" "Iphone 6s"
    -->And I select the "1GB+AYCE min" price plan<--
    Then I can complete my order

1 scenario (1 undefined)
5 steps (1 skipped, 1 undefined, 3 passed)
0m0.130s

(箭头中的那个是我命令行中突出显示为未定义的那个)

但是,在step_definitions文件夹下的.rb脚本中,我有以下内容:

Given (/^I am on the Store Homepage$/) do
  **CONTENT-HERE**
end
When (/^I click on the Mobile Phones roundel link$/) do
  **CONTENT-HERE**
end
When (/^I select a "Apple" "Iphone 6s"$/) do
  **CONTENT-HERE**
end
When (/^I select the "1GB+AYCE min" price plan$/) do
  **CONTENT-HERE**
end
Then (/^I can complete my order$/) do
  **CONTENT-HERE**
end

我不确定为什么这个黄瓜脚本错过了一步,但这让我感到愤怒。有人可以帮忙吗?

编辑:除此之外,如果有人也能回答为什么它没有向我展示它所期待的片段,那就太好了。

2 个答案:

答案 0 :(得分:2)

您不应该为每个计划创建一个步骤。

When (/^I select the "([^"]*)" price plan$/) do |plan|
  case plan
  when "1GB+AYCE min"
    # do something
  end
end

答案 1 :(得分:0)

由于你的正则表达式与你的文字不匹配,你得到了一个丢失的步骤定义错误。

你想要的是:

When (/^I select the "1GB\+AYCE min" price plan$/) do

一次或多次匹配文字字符+而不是B

请记住,ruby-cucumber使用正则表达式语法而不是文字字符串来匹配步骤定义。