2012-03-15 38 views
1

我得到以下警告使用此代码然后弃用:鉴于/时/黄瓜

WARNING: Using 'Given/When/Then' in step definitions is deprecated, use 'step' to call other steps instead 

我如何纠正呢?

代码:

Feature: Viewing tickets 
In order to view the tickets for a project 
As a user 
I want to see them on that project's page 

Background: 
Given there is a project called "TextMate 2" 
And that project has a ticket: 
| title   | description     | 
| Make it shiny! | Gradients! Starbursts! Oh my! | 
And there is a project called "Internet Explorer" 
And that project has a ticket: 
| title    | description | 
| Standards compliance | Isn't a joke. | 
And I am on the homepage 

Scenario: Viewing tickets for a given project 
    When I follow "TextMate 2" 
    Then I should see "Make it shiny!" 
    And I should not see "Standards compliance" 
    When I follow "Make it shiny!" 
    Then I should see "Make it shiny" within "#ticket h2" 
    And I should see "Gradients! Starbursts! Oh my!" 

    When I am on the homepage 
    And I follow "Internet Explorer" 
    Then I should see "Standards compliance" 
    And I should not see "Make it shiny!" 
    When I follow "Standards compliance" 
    Then I should see "Standards compliance" within "#ticket h2" 
    And I should see "Isn't a joke. 

非常感谢!

+0

这将是由于步骤的定义,而不是功能文件代码 - 你可以发布你的步骤定义代码? – 2012-03-16 00:38:23

+0

您可以将步骤方法用于单个步骤或多个步骤。看到我的答案在这里http://stackoverflow.com/questions/918066/reuse-cucumber-steps/8395715#8395715 – michaeltwofish 2012-03-17 02:22:50

回答

7

某处步骤定义你使用以下建筑:

Then "a file named '#{want_file}' should exist" 

,而不是你应该使用

step("a file named '#{want_file}' should exist") 

或(首选,我认为) - 避免调用从另一个一步都没有。重构定义并将通用部分提取到单独的类或方法中会更好。

+0

如果前缀是“步骤”,黄瓜如何知道如果我指的是'给定''什么时候'或'然后'? – Edmund 2013-05-01 19:39:20

1

替换这个(功能/ step_definitions/web_steps.rb,行35-37):

When /^(.*) within (.*[^:])$/ do |step, parent| 
    with_scope(parent) { When step } 
end 

像这样的东西:

When /^(.*) within (.*[^:])$/ do |the_step, parent| 
    with_scope(parent) { step the_step } 
end 

为我工作!