Я хотел бы использовать аргументы-аргументы, предоставленные rspec, чтобы соответствовать массиву хэшей. Это идеальный код, который мне бы хотелось:RSpec аргумент array array of hashes
context 'logging stock levels' do
subject { double(:stock_logger, stock_updated: nil) }
let(:stock_importer) { described_class.new(logger: subject) }
before(:each) { stock_importer.import }
it { is_expected.to have_received(:stock_updated)
.with(array_including(hash_including('sku', 'count_on_hand'))) }
end
Это ошибка с несоответствием аргументов для меня. Единственным рабочим решением, которое я могу придумать, является следующее:
context 'logging stock levels' do
subject { double(:stock_logger, stock_updated: nil) }
let(:stock_importer) { described_class.new(logger: subject) }
before(:each) { stock_importer.import }
it do
is_expected.to have_received(:stock_updated) do |stock_levels|
expect(stock_levels).to include(include('sku', 'count_on_hand'))
end
end
end
Было ли я просто что-то не так?
Я попытался 'array_including ('ы' => a_kind_of (String), 'count_on_hand' => a_kind_of (String))) ', но это не соответствовало. Это не имело бы смысла, если бы это сработало. – DrPheltRight
'ожидать ([{: foo =>" blah ",: bar =>" blah2 "}]). Включить (: foo => be_a_kind_of (String),: bar => be_a_kind_of (String))' просто работал консоль для меня – SuckerForMayhem
Да, именно так я ее и решил. Однако я хотел бы решить его с помощью синтаксиса аргумента arg от rspec-mocks. – DrPheltRight