2015-04-24 4 views
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 

Означает ли это, я не могу проверить состояния моделей в спецификациях контроллера?

+1

Попробуйте обновить 'user':' ожидать (user.reload.balance) .то экв (990) ' –

+0

Это было, спасибо! – pmichna

+0

@MarekLipka: Добавить как ответ! – davidwessman

ответ

2

Пополните свой user экземпляр:

expect(user.reload.balance).to eq(990) 
Смежные вопросы