assert 和 assert_select 的区别

Difference between assert and assert_select

我正在 rails Minitest 中编写测试用例,我有两个场景,第一个是:

 assert_select "button.btn[type=submit]", I18n.t('pay_and_post_job')  

但是当我 运行 这个然后我得到一个错误

Expected at least 1 element matching "button.btn[type=submit]", found 0.. Expected 0 to be >= 1.

但是如果我写与 :

相同的断言
 assert "button.btn[type=submit] #{I18n.t('pay_and_post_job')}"

然后测试通过

谁能给我解释一下到底发生了什么??

assertassert_select 来自两个截然不同的工具包。第一个非常通用,仅测试其第一个参数是否为真值。 assert "button" 将始终通过,因为 "button" 是真实的。

另一方面,assert_select 来自 Rails 并测试您的 html 输出。尝试减少测试语句直到它通过,如果 assert_select "[type=submit]" 仍然使您无法通过模板中的某些错误。我敢打赌 assert_select "input.btn[type=submit]" 会通过。