Ruby:已弃用:如果期望为零,则使用 assert_nil。这将在 Minitest 6 中失败

Ruby: DEPRECATED: Use assert_nil if expecting nil. This will fail in Minitest 6

我正在尝试 运行 在 Ruby.[=16= 中使用 Minitest 一些测试用例]

这是我正在测试的 class**:

# square_root.rb

class SquareRoot

  def square_root(value)
    return nil if value < 0
    Math.sqrt(value).round
  end
end

这是我的测试用例:

# square_root_test.rb

require 'minitest/autorun'

class SquareRootTest <Minitest::Test
  def test_that_square_root_of_9_is_3
    assert_equal 3, square_root(9)
  end

  def test_that_square_root_of_17_is_4
    assert_equal 4, square_root(17)
  end

  def test_that_square_root_of_24_is_5
    assert_equal 5, square_root(24)
  end

  def test_that_square_root_of_negative_number_is_nil
    assert_equal nil, square_root(-1)
  end
end

但是当我运行下面的命令运行测试时:

ruby square_root_test.rb

我收到以下弃用警告:

Run options: --seed 50741

# Running:

DEPRECATED: Use assert_nil if expecting nil from square_root_test.rb:26. This will
fail in Minitest 6.
....

Finished in 0.000839s, 4769.9228 runs/s, 4769.9228 assertions/s.
4 runs, 4 assertions, 0 failures, 0 errors, 0 skips

这是我修复它的方法:

根据弃用警告的消息,我简单地替换了断言:

assert_equal nil, square_root(-1)

assert_nil square_root(-1)

assert_nil(square_root(-1))

所以我的测试文件之后看起来像这样:

# square_root_test.rb

require 'minitest/autorun'

class SquareRootTest <Minitest::Test
  def test_that_square_root_of_9_is_3
    assert_equal 3, square_root(9)
  end

  def test_that_square_root_of_17_is_4
    assert_equal 4, square_root(17)
  end

  def test_that_square_root_of_24_is_5
    assert_equal 5, square_root(24)
  end

  def test_that_square_root_of_negative_number_is_nil
    assert_nil square_root(-1)
  end
end

注意: 逗号 , 标点符号也被删除了。

就这些了。

希望对您有所帮助