我尝试对我的应用进行单元测试,然后我写了
it 'with checkbox' do
@order = FactoryGirl.create(:order)
expect{ @order }.to change{ Client.count }.by(1)
end
和shell显示错误
expected result to have changed by 1, but was changed by 0
但为什么呢?我通过pry
绑定了规范并制作了这个:
在@order = FactoryGirl.create(:order)
之前我打电话
[1] pry(#<RSpec::ExampleGroups::Order::CreateAValidOrder>)> Client.count
=> 0
在@order = FactoryGirl.create(:order)
致电后
[1] pry(#<RSpec::ExampleGroups::Order::CreateAValidOrder>)> Client.count
=> 1
它有效,但为什么rspec会给我一个错误?我不明白
抱歉我的英文不好
答案 0 :(得分:2)
我认为@order = FactoryGirl.create(:order)
正在expect命令之前执行。请尝试以下代码:
it 'with checkbox' do
expect{ FactoryGirl.create(:order) }.to change{ Client.count }.by(1)
end
答案 1 :(得分:1)
在数据库中创建记录后设置@order。所以,事实上,它的价值并没有改变。
你最好朝着这个方向前进:
期待{FactoryGirl.create(:order)}。更改(订单,:计数).by(1)