私は、次のアクションを持っている:コントローラー仕様:(:作成)期待する(コントローラ)が受信.TO実行されてから#createアクションを防ぐ
def create
binding.pry
@finding.save
respond_with @project, @finding
end
次のテストを実行している...
it 'balances the consecutive numbers', focus: true do
expect {
post :create, params: {...}
}.to change { Finding.count }.from(0).to 1
end
...私は最初binding.pry
コンソール(#create
アクションが実際に実行されたことを証明する)表示を持ち、その後、スペックは渡し:
Finished in 4.24 seconds (files took 5.31 seconds to load)
1 example, 0 failures
は、私はすぐに示し、このスペック失敗の結果を持って、今私はexpect(controller).to receive(:create)
...
it 'balances the consecutive numbers', focus: true do
expect(controller).to receive(:create) # This is new!
expect {
post :create, params: {...}}
}.to change { Finding.count }.from(0).to 1
end
を追加するときに...と再度テストを実行します。
expected result to have changed from 0 to 1, but did not change
change { ... }
期待を取り除きます。 ..
it 'balances the consecutive numbers', focus: true do
expect(controller).to receive(:create)
post :create, params: {project_id: @project.id, finding: {requirement_id: @requirement.id}}
end
...それは再び渡し:
1 example, 0 failures
まだ、binding.pry
の#create
は呼び出されていません!
ここで何が起こっていますか?どういうわけかexpect(controller).to receive(:create)
は実際の#create
アクションが実行されないように思われます!これは私が望むものではありません。私はいつものようにそれを実行したい。
私はここで間違っていますか?あなたは本当の方法がsupressedさexpect().to receive()
を使用する場合...それはちょうど予想通り何かが呼び出されたかどうかを確認
私はARのコールバックと同じ問題に直面しています。私は答えを得た。ありがとう。 –