我有一个控制器规范:
let!(:user) { create(:user, balance: 1000) }
let!(:group) { create(:group) }
let!(:parenthood) { create :parenthood, user: user }
before :each do
sign_in user
end
context 'when user wants to pay for own children' do
let(:box) { build(:box, user: user, person_amount: 10, group: group) }
it "decreases user's balance" do
post :create, box: box.attributes.merge({'box_memberships_attributes'=>{'0'=>{'id'=>'', 'student_id'=>parenthood.student.id, '_destroy'=>'0'}},
'pay_own_children' => 'true'})
expect(user.balance).to eq(990)
end
end
不要注意该测试的丑陋。 :)
此测试返回错误:
Failure/Error: expect(user.balance).to eq(990)
expected: 990
got: 1000.0 (#<BigDecimal:c973608,'0.1E4',9(27)>)
(compared using ==)
但是,如果我使用binding.pry
在控制器中调试测试方法,一切正常:
def create
# some code
binding.pry
# current_user.balance.to_s return "990"
end
这是否意味着我无法测试控制器规格中的模型状态?
答案 0 :(得分:2)
重新加载user
个实例:
expect(user.reload.balance).to eq(990)