微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ruby:已弃用:如果期望nil,请使用assert_nil这将在Minitest 6中失败

如何解决Ruby:已弃用:如果期望nil,请使用assert_nil这将在Minitest 6中失败

我正在尝试使用 Ruby 中的 Minitest 运行一些测试用例。

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

# 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)

OR

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

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

仅此而已。

我希望这会有所帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。