assert和assert_select之间的区别

时间:2016-03-14 13:13:28

标签: ruby-on-rails ruby-on-rails-4 minitest assertions

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

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

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

  

预计至少有1个元素匹配“button.btn [type = submit]”   0 ..           预期0为> = 1。

但如果我写出相同的断言:

 assert "button.btn[type=submit] #{I18n.t('pay_and_post_job')}"

然后测试正在通过

有人可以向我解释这到底发生了什么?

1 个答案:

答案 0 :(得分:1)

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

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