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
Более старый код, SQL 7, sp_hexadecimal
SQL 2005 (+ 2000, возможно), ведущее устройство dbo.fn_varbintohexstr