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,gem
capybara
安装在测试块中,但minitest也作为依赖项安装


这些测试的语法有什么错误?

对于这种情况,我建议您使用
assert_equal
而不是
assert
。然后,当测试失败时,您将能够看到预期值与实际值的比较结果。当您执行类似于
断言等于'en',I18n.locale
的操作时,输出是什么?就是这样。在第三种情况下,
assert_equal(:en,I18n.locale)
使用预期的符号,错误消息返回该符号。而
assert\u not\u equal(:en,I18n.locale)
则是相反的truthy语句。