- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个测试,我在其中完成了对拥有一个帐户的用户的付款。该帐户包含余额并有许多交易。
付款完成后,将创建交易并更新帐户余额。
使用 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
最佳答案
尝试重新加载记录
assert_difference("a_user.account.reload.balance", 250.00) do
# Process payment
end
关于ruby-on-rails - Rails 的 assert_difference 是否忽略了一些变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4865861/
context 'with event_type is available create event' do let(:event_type) { EventType.where( name: '
我正在做功能测试,刚刚发现了 assert_difference,如: assert_difference('Account.count') do post :create, :account =
这是一个标准的insert_difference 更新测试: assert_difference 'Article.count' do post :create, article: {...} e
A Book has_many Reviews 和 Review belongs_to Book。我正在使用 rails 4.0 和 ruby 2.0.0p247 我正在运行测试如下: test
我是 Rails 测试的新手,我正在尝试理解对 assert_difference 的调用。来自documentation , 我推断该方法需要一个数值来表示表达式的前一个值和最终值之间的差异。如果我
我想测试一个函数如何改变数据库中的某些东西。我正在努力处理与以下 ActiveSupport::TestCase 测试用例等效的 ExUnit: test "creates a database re
我有以下测试: it 'create action: a user replies to a post for the first time' do login_as user # Actio
我有一个测试,我在其中完成了对拥有一个帐户的用户的付款。该帐户包含余额并有许多交易。 付款完成后,将创建交易并更新帐户余额。 使用 assert_difference 检查交易数量的变化给出了预期的结
这真的是最好的方法吗? assert_difference('u.point', 10) do assert_difference('u.point_logs.count') do ass
Rails 有一个断言,可以在执行块后测试值的差异。来自 here : assert_difference 'Article.count', 1 do post :create, article:
在 Rails 创建的功能测试中(使用脚手架生成模型时),有一个测试如下所示: test "should create product" do assert_difference('Produ
我是一名优秀的程序员,十分优秀!