Dan*_*tep 103 ruby testing cucumber
我想重用一些Cucumber步骤,但似乎找不到正确的方法.
我想写一个像这样的步骤:
Given /^I login with (.*) credentials$/ |type|
  # do stuff with type being one of "invalid" or "valid"
end
但是又有另一个步骤:
Given /^I login successfully$
  # call "Given I login with valid credentials"
end
因此在测试用户身份验证时我可以使用前者,但大多数其他地方,我可以使用后者,而不是实际上必须重新编码.
有没有办法调用其他步骤,或者我只是将逻辑放在辅助方法中,并从每个任务调用所述方法(基本上是一个方法提取重构,在阅读我的问题后让我相信这实际上是最好的方法无论如何)?
mic*_*ish 103
请注意,在最近版本的黄瓜中调用步骤中的步骤的方法已经改变,如果出现"警告:在步骤定义中使用'给定/何时/然后'"这样的错误,您将会看到,请使用'step'来改为调用其他步骤:/path/to/step_definitions/foo_steps.rb:631:在`block in'"中.有关详细信息,请参阅黄瓜维基.
改变的要点是你现在应该使用step或steps方法.
When /^I make all my stuff shiny$/
  step "I polish my first thing"
end
When /^I make all my stuff shiny$/
  steps %Q{
    When I polish my first thing
    When I shine my second thing
  }
end
tom*_*fro 102
更新:不推荐使用下面描述的方法.从另一个步骤中调用步骤的推荐方法现在看起来像这样:
Given /^I login successfully$/
    step "I login with valid credentials" 
end 
旧的,弃用的方法(供参考):
您可以通过以下其他步骤调用步骤:
Given /^I login successfully$/
  Given "I login with valid credentials"
  Then "I should be logged in"
end
如果要素中的所有方案都需要此(或其他步骤),您还可以使用常用步骤为每个要素添加背景,如下所示:
Background:
  Given I log in with valid credentials
Scenario: Change my password
  Given I am on the account page
And*_*lov 43
从步骤定义调用步骤是一种不好的做法,并且有一些缺点:
AslakHellesøy 建议将流行的动作提取到World而不是重复使用步骤.它将这些操作隔离在一个地方,使这个代码更容易找到.您也可以将代码提取到常用的Ruby类或模块中.
#/support/world_extensions.rb
module KnowsUser
  def login
    visit('/login')
    fill_in('User name', with: user.name)
    fill_in('Password', with: user.password)
    click_button('Log in')
  end
  def user
    @user ||= User.create!(:name => 'Aslak', :password => 'xyz')
  end
end
World(KnowsUser)
#/step_definitions/authentication_steps.rb
When /^I login$/ do
  login
end
Given /^a logged in user$/ do
  login
end
以下是关于Cucumber邮件列表中主题的有用讨论 - 链接
最好用%{}包装您的步骤而不是引号.然后,您不需要转义您需要经常使用的双引号:
Given /^I login successfully$
  step %{I login with valid credentials}
end
Given /^I login with (.*) credentials$/ |type|
  # do stuff with type being one of "invalid" or "valid"
end
| 归档时间: | 
 | 
| 查看次数: | 39623 次 | 
| 最近记录: |