0

我有一个失败的步骤定义。

从下面的功能中,我发现它在“并且该功能有问题”时失败(标题处未定义的局部变量)

Feature: Viewing issue
In order to view the issues for a feature
As a user
I want to see them on that feature's page
Background:    
    Given there is a release called "Confluence"
    And that release has a feature:
      | title                | description   |
      | Make it shiny!       | Gradients! Starbursts! Oh my! |
    And that feature has a issue:
      | title                | description   |
      | First Issue          | This is a first issue. |
    And I am on the homepage

  Scenario: Viewing issue for a given feature
    When I follow "Confluence"
    Then I should see "Standards compliance"
    When I follow "Standards compliance"
    Then I should see "First Issue" 
    And I should see "This is a first issue."

我如何为它写一个步骤定义。

这就是我对功能定义所拥有的,它工作得很好,但我尝试对问题对象做同样的事情,但它不起作用

Given /^that release has a feature:$/ do |table|
  table.hashes.each do |attributes|
    @release.features.create!(attributes)
  end
end
4

1 回答 1

0

作为最佳实践,您不应在步骤中使用实例变量。这使他们相互依赖。

我会这样写你的步骤(在伪代码中):

Given there is a release called <name>
    # create model

Given release <name> has a feature <table>
    release = Release.find_by_name(<name>)
    # rest of your code here is fine, but reference 'release' instead of '@release'

Given release <name>'s <feature_name> has issues <table>
    release = Release.find_by_name(<name>)
    feature = release.features.find_by_name(<feature_name>)
    table.hashes.each do |attributes|
       # create issue
    end

然后你的 Cucumber 功能会像这样更好地阅读:

Given there is a release called "Confluence"
And release "Confluence" has a feature:
  | title                | description   |
  | Make it shiny!       | Gradients! Starbursts! Oh my! |
And release "Confluence"'s "Make it shiny!" feature has issues
  | title                | description   |
  | First Issue          | This is a first issue. |
于 2012-05-15T16:51:16.007 回答