SubmissionsControllerのspace_available_mbメソッドをスタブして、5を返すようにしたいと思います。これは機能しません。それは実際のハードディスク上の正しいスペースを返します。キュウリでメソッドをスタブする方法は?
space_available_mb
がコメントアウトされている場合、予期しないエラーがスローされます。つまり、should_receive
が正しく機能します。ただし、それは5を返しませんが、実数は何らかの理由でand_return
が失敗します。
さらにデバッグすると、and_return
が実際に呼び出されますが、メソッドが実行されて実数が返された後にのみ表示されます。
Scenario: Hard Disk Space is low on new submission
Given I am on the new_submission page
And hard disk space is low
Then I should see "Low disk space!"
Given /^hard disk space is low$/ do
SubmissionsController.should_receive(:space_available_mb).and_return(5)
end
class SubmissionsController < ApplicationController
include FileManager
def new
space = space_available_mb
...
end
end
module FileManager
def space_available_mb
...
end
end
[this](https://github.com/cucumber/cucumber/tree/master/examples/rspec_doubles/features)は役に立ちますか? – farnoy
モックオブジェクトの作成方法について説明している@farnoy。この場合、コントローラメソッドをスタブする必要があります。 – siamii
これは通常良い考えではないことに注意してください。キュウリは、通常、完全なスタックをテストする必要があります。本質的に外部サービスをスタブしようとしているユースケースは、これが推奨される唯一の時間です。 –