我有一个测试,我向一个拥有一个帐户的用户付款.该帐户包含余额并具有许多交易.
付款完成后,将创建一个交易并更新帐户余额.
使用assert_difference检查事务数量更改会给出预期结果.但是,使用assert_difference检查余额是否已更改.我可以看到SQL更新我的日志中的余额,但断言认为它没有改变.
我完全糊涂了,有人可以解释一下吗?
提前致谢.
这通过:
assert_difference("a_user.account.transactions.count", 1) do
# Process payment
end
Run Code Online (Sandbox Code Playgroud)
这失败了,说没有变化:
assert_difference("a_user.account.balance", 250.00) do
# Process payment
end
Run Code Online (Sandbox Code Playgroud)
这是断言的失败消息:
"a_user.account.balance" didn't change by 250.0.
<300.0> expected but was
<50.0>.
Run Code Online (Sandbox Code Playgroud)
这是日志文件中的相关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, …Run Code Online (Sandbox Code Playgroud)