はい、リクエストをモックできます。私はここでそれを行う方法を説明する長い答えを持っていましたが、実際にはそれは必ずしもあなたが望むものではありません.
例のヘルパー オブジェクトでヘルパー メソッドを呼び出すだけです。そのようです:
describe "#item" do
it "does whatever" do
helper.item.should ...
end
end
これにより、テスト リクエスト オブジェクトにアクセスできるようになります。リクエスト パスに特定の値を指定する必要がある場合は、次のように指定できます。
before :each do
helper.request.path = 'some-path'
end
実際、完全を期すために、元の回答を含めておきましょう。あなたがやろうとしていることによっては、まだ役立つかもしれないからです。
リクエストをモックする方法は次のとおりです。
request = mock('request')
controller.stub(:request).and_return request
同様に、返されたリクエストにスタブ メソッドを追加できます。
request.stub(:method).and_return return_value
そして、モックとスタブをすべて 1 行で行う代替構文:
request = mock('request', :method => return_value)
スタブしていないメッセージをモックが受け取った場合、Rspec は文句を言います。ヘルパーオブジェクトでリクエストヘルパーメソッドを呼び出すだけで、テストで気にしないことが他にある場合は、モックを「nullオブジェクト」にすることでrspecをシャットダウンできます。のように
request = mock('request').as_null_object
特定のテストに合格するために必要なのは、おそらくこれだけのようです。
describe "#item" do
let(:request){ mock('request', :fullpath => 'some-path') }
before :each do
controller.stub(:request).and_return request
end
it "does whatever"
end