无论页面内容如何,​​Cucumber / capybara功能始终通过

时间:2012-02-13 12:45:00

标签: cucumber capybara

我有以下黄瓜情景:

Background:
  Given the following roles exist:
  | id | name    |
  | 1  | janitor |
  And the following users exist:
  | username | password   | email               | role_ids |
  | janitor  | Cleaning31 | janitor@example.com | 1        |
  And I am logged in as "janitor" with password "Cleaning31"
  And the following articles exist:
  | id | title       | slug        | content      |
  | 1  | Article One | article-one | Article one. |

Scenario: Seeing link for deleting an article
  When I view the article list
  Then I should see the "Delete" link for article 1

......以及最后一步的定义:

Then /^I should (not )?see the "([^"]*)" link (?:in|under|for) article (\d+)$/ do |negation, content, article_id|
  page.should have_selector("\#article_#{article_id}") do |article|
    if negation
      article.should_not have_css('a', text: content)
    else
      article.should have_css('a', text: content)
    end
  end
end

即使我在功能或视图中将“删除”一词更改为“此功能永远不会起作用”,该功能也会始终通过。但是,在浏览器中,“删除”链接只会出现在具有“管理员”角色的用户的文章中。

尽管有大量文章暗示他们应该这样做,黄瓜的“向我展示页面”和“向我展示回应”似乎没有被定义。 (我的env.rb

其他功能似乎按预期工作。任何人都可以发现我出错的地方吗?

1 个答案:

答案 0 :(得分:3)

我的测试中没有断言。尝试将article.should_not have_css('a', text: content)更改为assert article.should_not have_css('a', text: content),依此类推。

编辑:

结果是什么?

element = page.find("\#article_#{article_id}")
if negation
      element.should_not have_css('a', text: content)
else
      element.should have_css('a', text: content)
end
Imho你应该使用find helper然后对你找到的元素进行断言。我想知道你在块中可用的内容是“文章”。