Не обрезайте []
, и все должно быть в порядке. []
идентифицируют массив JSON, который именно то, что вам нужно, чтобы выполнять итерацию его элементов.
with_lock
- это реализация Rails, которую нам не нужно тестировать. Вы можете использовать макет и проверить, звонит ли ваш код with_lock
. Единственная хитрость здесь заключается в том, чтобы гарантировать, что транзакция импортируется (т. Е. Выполняется код внутри with_lock
). RSpec предоставит блок, который вы можете вызвать. Ниже приведен фрагмент того, как вы можете это сделать - полная рабочая реализация может быть найдена здесь .
describe "#import_transactions" do
it "runs with lock" do
# Test if with_lock is getting called
expect(subject).to receive(:with_lock) do |*_args, &block|
# block is provided to with_lock method
# execute the block and test if it creates transactions
expect { block.call }
.to change { BankAccountTransaction.count }.from(0).to(2)
end
ImportService.new.import_transactions(subject, transactions)
end
end