videos reciclar reciclaje recicla que puede plastico paso para papel niños logos como codigos ruby-on-rails ruby fixtures functional-testing recycle

ruby on rails - reciclar - En Rails 3, recibo un NoMethodError para el reciclaje. método durante la prueba



reciclaje de plastico (3)

Tengo una prueba funcional que usa aparatos. También estoy usando dispositivos en mis pruebas de unidad, pero funcionan sin fallas. Al ejecutar las pruebas funcionales, obtengo un:

NoMethodError: undefined method ''recycle!'' for #<Response:0x10346be10> /test/functional/responses_controller_test.rb:10:in ''test_testing''

Mis pruebas funcionales , en este punto, no hacen más que una acción de índice. Ejemplo:

setup do @response = responses(:one) end test "testing" do get :index assert true end

Mi clase TestHelper incluye todos los dispositivos, por lo que los dispositivos de Respuestas definitivamente se están cargando. Y como dije, los accesorios funcionan perfectamente bien en las pruebas unitarias.

¿Alguna idea de lo que podría estar causando esto?


Acabo de tener un problema similar al nombrar una variable @request . Cambié a @_request y resolvió el problema.


Cambio

setup do @response = responses(:one) end

a

setup do @myresponse = responses(:one) end

¡Y ya te vas!

El problema radica en "actionpack-3.0.1 / lib / action_controller / test_case.rb" alrededor de la línea 386.

El caso de prueba asume que @response contiene un "ActionDispatch :: Response". Lo sobrescribe, ya no es "ActionDispatch :: Response" y el testcase falla.

No estoy seguro de si se trata de un comportamiento intencionado.

De todos modos, solo asegúrate de no sobrescribir @ response / @ request / @ controller / @ route y debería funcionar.


La respuesta de Flo es correcta en su mayor parte, pero solo quería aclarar:

En Rails 3.0.x, se espera que @request sea un tipo ActionController::TestRequest , ¡que tiene el recycle! Método definido en él. Hay TestResponse , TestRequest y TestSession .

Es posible que desee realmente inicializar o manipular objetos de estos tipos para ciertas situaciones. En mi caso, necesitaba burlarme del sitio con un nombre de dominio específico con

@request = ActionController::TestRequest.new unless @request @request.host = "www.hostname.com"