У меня есть тест, в котором я выполняю платеж пользователю, у которого есть одна учетная запись.Счет содержит остаток и содержит много транзакций.
По завершении платежа создается транзакция и обновляется баланс на счете.
Использование assert_difference для проверки количества изменений транзакций даетожидаемый результат.Однако использование assert_difference для проверки того, что баланс изменился, не делает.Я вижу SQL для обновления баланса в моем журнале, но утверждение думает, что оно не изменилось.
Я полностью сбит с толку, кто-нибудь может объяснить, пожалуйста?
Заранее спасибо.
Это проходит:
assert_difference("a_user.account.transactions.count", 1) do
# Process payment
end
Это терпит неудачу, говоря, что нет никаких изменений:
assert_difference("a_user.account.balance", 250.00) do
# Process payment
end
Это сообщение об ошибке из утверждения:
"a_user.account.balance" didn't change by 250.0.
<300.0> expected but was
<50.0>.
Это соответствующий SQL из файла журнала:
User Load (0.4ms) SELECT * FROM `users` WHERE (`users`.`id` = 108093344)
Account Load (0.2ms) SELECT * FROM `accounts` WHERE (`accounts`.user_id = 108093344) LIMIT 1
Transaction Columns (1.5ms) SHOW FIELDS FROM `transactions`
Transaction Create (0.3ms) INSERT INTO `transactions` (`created_at`, `updated_at`, `amount`, `account_id`, `detail`) VALUES('2011-02-01 17:15:21', '2011-02-01 17:15:21', 250.0, 956948796, 'Payment completed')
Account Load (0.2ms) SELECT * FROM `accounts` WHERE (`accounts`.`id` = 956948796)
Account Update (0.2ms) UPDATE `accounts` SET `updated_at` = '2011-02-01 17:15:21', `balance` = 300.0 WHERE `id` = 956948796