【问题标题】:Undefined method: assert_not_nil in Minitest未定义的方法:Minitest 中的 assert_not_nil
【发布时间】:2016-03-12 09:48:38
【问题描述】:

我正在尝试执行以下代码,但它给了我一个未定义的方法错误:

require 'minitest/autorun'
require 'string_extension'

class StringExtensionTest < Minitest::Test
  def test_humanize_returns_nothing
    assert_not_nil "Yo".humanize, "humanize is returning nil."
  end
end

我正在尝试执行 Codeschool 的 Rails 课程中的这段代码,但似乎没有方法 assert_not_nil。我还检查了 MiniTest 框架的文档,那里都没有定义,但我不确定。

【问题讨论】:

    标签: ruby minitest testunit


    【解决方案1】:

    Here你可以找到MiniTest定义的断言列表。

    如您所见,assert_not_nil 未定义。有很多可能的断言 MiniTest 没有定义,但任何断言都可以用最简单的断言 assert 定义也是事实。

    在您的具体情况下:

    assert result != nil
    

    您也可以传递自定义消息

    assert result != nil, "Expected something to not be nil"
    

    【讨论】:

    • 那是我需要知道的信息,我应该更改为 MiniTest::Test 还是坚持使用 Test::Unit::TestCase。基本assert 不会产生可读的错误消息,所以Test::Unit::TestCase 是。
    【解决方案2】:

    assert_not_nil 只是refute_nil 的别名,但它仅适用于 Rails,不是标准 Minitest 的一部分。更改您的测试以扩展 ActiveSupport::TestCase 应该可以解决问题:

    class StringExtensionTest < ActiveSupport::TestCase
      def test_humanize_returns_nothing
        assert_not_nil "Yo".humanize, "humanize is returning nil."
      end
    end
    

    【讨论】:

      【解决方案3】:

      assert !!result 为我工作。 !! 表示“转换为布尔值”(字面意思是双重否定)。

      【讨论】:

        【解决方案4】:

        你可以使用

        assert "Yo".humanize
        

        在红宝石中,但 nil 和 false 是真实的。

        更新:因为你想明确检查不为零:

        refute_nil "Yo".humanize
        

        但在您描述的场景中,我实际上会检查返回值是否符合我的预期。考虑:

        class String
          def humanize
            false
          end
        end
        
        refute_nil "Yo".humanize
        assert_equal "Yo", "Yo".humanize
        

        【讨论】:

        • 好吧,它会检查它确实返回了一些东西,而我想以另一种方式检查它。
        • "assert " 当 为 nil 时不起作用 - 坦率地说,我很惊讶。我必须做assert !!&lt;anything&gt; 才能让它工作。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多