>我有以下规范:
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)