0
У меня есть контроллер спецификации:Могу ли я проверить атрибуты экземпляра модели в спецификации контроллера?
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
Означает ли это, я не могу проверить состояния моделей в спецификациях контроллера?
Попробуйте обновить 'user':' ожидать (user.reload.balance) .то экв (990) ' –
Это было, спасибо! – pmichna
@MarekLipka: Добавить как ответ! – davidwessman