我有以下黄瓜情景:
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)
其他功能似乎按预期工作。任何人都可以发现我出错的地方吗?
答案 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然后对你找到的元素进行断言。我想知道你在块中可用的内容是“文章”。