我有以下作用:控制器規格:期待(控制器)。爲了接收(:創建)防止#創建動作被執行
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
...我首先顯示出來(證明該#create
行動實際上是執行)的binding.pry
控制檯,然後規範經過:
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
行動!這不是我想要的。我希望它一如既往地執行。
我在這裏做錯了什麼?
我面臨同樣的問題,用AR回調。我得到了答案。謝謝。 –