6

me han escrito una prueba funcional que cambia algunas de las variables de entorno del objeto solicitud para simular un usuario haya iniciado sesión.cambiar las variables de entorno en la solicitud rieles pruebas de integración

require 'test_helper' 
class BeesControllerTest < ActionController::TestCase 

    # See that the index page gets called correctly. 
    def test_get_index 

    @request.env['HTTPS'] = "on" 
    @request.env['SERVER_NAME'] = "sandbox.example.com" 
    @request.env['REMOTE_USER'] = "joeuser" # Authn/Authz done via REMOTE_USER 

    get :index 
    assert_response :success 
    assert_not_nil(assigns(:bees)) 
    assert_select "title", "Bees and Honey" 
    end 
end 

La prueba funcional funciona bien.

Ahora quiero hacer algo similar como parte de las pruebas de integración. Esto es lo que he intentado:

require 'test_helper' 
class CreateBeeTest < ActionController::IntegrationTest 
    fixtures :bees 

    def test_create 
    @request.env['HTTPS'] = "on" 
    @request.env['SERVER_NAME'] = "sandbox.example.com" 
    @request.env['REMOTE_USER'] = "joeuser" # Authn/Authz done via REMOTE_USER 

    https? 

    get "/" 
    assert_response :success 
    [... more ...] 
    end 
end 

consigo quejaba un error que @request es nula. Sospecho que esto tiene algo que ver con el objeto de la sesión, pero no estoy seguro de cómo hacerlo funcionar.

+0

qué línea lanza el error? – kikito

+0

La línea '@ request.env ['HTTPS'] =" on "' se queja de que no se puede aplicar el método 'env' a un valor nulo. – rlandster

+0

Aquí hay un parche de tres años enviado a Rails que aborda este problema: http://dev.rubyonrails.org/ticket/8209 – rlandster

Respuesta

2

Puede configurar HTTPS en las pruebas de integración con

https! 

y establecer el nombre de host con:

host! "sandbox.example.com" 

cual podría ser el equivalente a lo que quiere hacer?

Esto se describe en los rieles guías Rails guides

+3

Pero, ¿cómo establecer, por ejemplo, 'request.remote_ip'? No hay un método especial similar para eso en 'ActionDispatch :: Integration :: Session' – Green

0

Puede cambiar variables de peticiones a través de parámetros para publicar método.

Para su caso, el método test_create habrá:

def test_create 
    https! 

    get "/", nil, { 'SERVER_NAME'] => "sandbox.example.com", 'REMOTE_USER'] => "joeuser" } 

    assert_response :success 
    [... more ...] 
end 

mismas obras para la orden de ajuste de entrada a los datos en bruto:

post root_path, nil, { 'RAW_POST_DATA' => 'some string' } 
Cuestiones relacionadas