Ruby / RSpeC语言 预计不包括任何



>我有以下规范:

describe 'active' do
it 'does not include inactive or deleted records' do
inactive_record= create(:record, :inactive)
deleted_record= create(:record, :deleted)
expect(described_class.active).not_to include inactive_record
expect(described_class.active).not_to include deleted_record
end
end

当有两个测试时,这是可以的,但是当我有 10 个不同的状态需要检查时,我需要写出十个不同的期望行。我可以做这样的事情:

[records_not_to_be_included].each { |record| expect(described_class.active).not_to include record }

但希望能够做这样的事情:

expect(described_class.active).not_to include_any_of [records_not_to_be_included]

这在RSpec上可能吗?

如您所见,从文档中:

# Passes if actual includes expected. This works for
# collections and Strings. You can also pass in multiple args
# and it will only pass if all args are found in collection.
#
# @example
#   expect([1,2,3]).to      include(3)
#   expect([1,2,3]).to      include(2,3)
#   expect([1,2,3]).not_to  include(4)
#   expect("spread").to     include("read")
#   expect("spread").not_to include("red")
#   expect(:a => 1, :b => 2).to include(:b => 2, :a => 1)
#   expect(:a => 1, :b => 2).not_to include(:a => 2)
#   ...
def include(*expected)
BuiltIn::Include.new(*expected)
end

include接受一个或多个元素,因此您可以尝试:

expect(described_class.active).not_to include(inactive_record, deleted_record)

最新更新