Sí, puede burlarse de la solicitud. Tengo una respuesta larga aquí que describe cómo hacer eso, pero de hecho eso no es necesariamente lo que quieres.
Simplemente llame a su método de ayuda en el objeto auxiliar en su ejemplo. De la misma manera:
describe "#item" do
it "does whatever" do
helper.item.should ...
end
end
Eso le dará acceso a un objeto de solicitud de prueba. Si es necesario especificar un valor específico para la ruta de solicitud, puede hacerlo de esta manera:
before :each do
helper.request.path = 'some-path'
end
En realidad, para lo completo, deja que incluyo mi respuesta original, ya que dependiendo de lo que está intentando hacerlo puede ser útil.
Así es como se puede burlarse de la solicitud:
request = mock('request')
controller.stub(:request).and_return request
Puede agregar métodos de derivación a la petición devuelta de manera similar
request.stub(:method).and_return return_value
Y sintaxis alternativa para burlarse & talón de todos en una sola línea:
request = mock('request', :method => return_value)
Rspec se quejará si su simulacro recibe messa ges que no has tropezado. Si hay otras cosas Simplemente llame a su método de solicitud de ayuda sobre el objeto auxiliar que hace que no le importe su prueba, puede cerrar rspec haciendo que la simulación sea un "objeto nulo", por ejemplo. Al igual que como
request = mock('request').as_null_object
Parece que todo lo que probablemente necesita para obtener su aprobación prueba específica es la siguiente:
describe "#item" do
let(:request){ mock('request', :fullpath => 'some-path') }
before :each do
controller.stub(:request).and_return request
end
it "does whatever"
end
¿Tiene un "require 'rspec/rieles'" en su spec_helper.rb? – Rubyman
Sí, lo hago. Gracias. –