Ruby on rails 返回奇数结果的测试语法
以下三个测试会处理,但会给出误导性的结果,其中应用程序的默认语言环境是Ruby on rails 返回奇数结果的测试语法,ruby-on-rails,minitest,Ruby On Rails,Minitest,以下三个测试会处理,但会给出误导性的结果,其中应用程序的默认语言环境是:en test "locale signed in wrong" do sign_in users(:end_consumer_email) puts users(:end_consumer_email).idiom.label.downcase I18n.locale = users(:end_consumer_email).idiom.label.downcase puts I18
:en
test "locale signed in wrong" do
sign_in users(:end_consumer_email)
puts users(:end_consumer_email).idiom.label.downcase
I18n.locale = users(:end_consumer_email).idiom.label.downcase
puts I18n.locale
assert I18n.locale != 'en'
end
test "locale signed in correct" do
sign_in users(:end_consumer_email)
puts users(:end_consumer_email).idiom.label.downcase.to_s
I18n.locale = users(:end_consumer_email).idiom.label.downcase
puts I18n.locale
assert I18n.locale == 'es'
end
test "locale not signed in" do
puts I18n.locale
assert I18n.locale == 'en'
end
第一种情况是放置es
并返回true。但这只是海市蜃楼。
第二个测试返回相同的es
put,但抱怨预期false为真。
第三个测试返回en
,但对false是否真实有相同的抱怨
因此,在日志记录和测试的实际处理之间,有些东西是不正确的,并且是非常误导的。Rails 6.1.3,gemcapybara
安装在测试块中,但minitest也作为依赖项安装
这些测试的语法有什么错误?对于这种情况,我建议您使用
assert_equal
而不是assert
。然后,当测试失败时,您将能够看到预期值与实际值的比较结果。当您执行类似于断言等于'en',I18n.locale
的操作时,输出是什么?就是这样。在第三种情况下,assert_equal(:en,I18n.locale)
使用预期的符号,错误消息返回该符号。而assert\u not\u equal(:en,I18n.locale)
则是相反的truthy语句。