Ruby 水豚有什么?当它应该失败时通过

Ruby 水豚有什么?当它应该失败时通过,ruby,capybara,Ruby,Capybara,为什么要通过以下步骤: page.has_css?("doesnt exist") 当此操作正确失败时: page.should have_css("doesnt exist") 如果我跑步: puts page.has_css?("doesnt exist") 它打印“false”,但步骤仍然通过 你知道为什么吗?你应该: assert page.has_css?("doesnt exist") 如果在测试中写入“2==3”,它的计算结果将为false,但测试方法不一定会失败。你需要一

为什么要通过以下步骤:

page.has_css?("doesnt exist")
当此操作正确失败时:

page.should have_css("doesnt exist")
如果我跑步:

puts page.has_css?("doesnt exist")
它打印“false”,但步骤仍然通过


你知道为什么吗?

你应该:

assert page.has_css?("doesnt exist")

如果在测试中写入“2==3”,它的计算结果将为false,但测试方法不一定会失败。你需要一个断言。我认为“应该”风格的语法也在暗中进行某种断言。

听起来不错,但我得到了一个“未定义的方法‘assert’””错误,我需要包括什么才能让它工作?不,我没有额外的东西来让我的断言工作。尝试另一种形式的断言:asssert_equal true,page.has_css?(“doesnt not exist”)Ok-正常工作,需要包含Test::Unit::Assertions模块。感谢您的帮助,您的解决方案是正确的。起初我也发现这一点令人困惑,但调用
页面.has_css?(“whatever”)
似乎只是一个查询方法,如上所述。查询方法用于“查询页面中是否存在某些元素,并处理和操作这些元素”。因此,您可以询问页面是否存在某些元素,但您的“测试方法”只是问一个问题(正如@coder_tim所提到的)——而不是检查给定的答案是否符合预期。