最小测试警告:已弃用全局使用must_match.使用"_(obj)"



我正在使用Minitest 5.12.0编写以下测试:

require 'minitest/autorun'
require 'nokogiri'
require 'net/http'
class NetClass; end
describe NetClass do
attr_accessor :uri, :net
before do
@uri=URI('http://example.com/index.html')
@net=Net::HTTP.get(uri)
end
it 'gets uri' do
net.must_match /Example Domain/i
end
end

测试成功,但输出警告:

已弃用:全局使用 net_test.rb:16 中的must_match 请改用_(obj).must_match。这将在最小测试 6 中失败

为了消除警告,我更改了该行:

net.must_match /Example Domain/i

_(net).must_match /Example Domain/i

我以前没有见过_(obj)语法,所以我的问题是在这种情况下_()做什么。

这是特定于最小测试的功能。从文档:

# Returns a value monad that has all of Expectations methods
# available to it.
#
# Also aliased to #value and #expect for your aesthetic pleasure:
#
#         _(1 + 1).must_equal 2
#     value(1 + 1).must_equal 2
#    expect(1 + 1).must_equal 2

因此,它是一个包装器,可将所有需要的测试方法添加到对象中。

实现如下:

def _ value = nil, &block
Minitest::Expectation.new block || value, self
end

您可以在此处挖掘资源

最新更新