2012-03-03 15 views
9

Estoy probando la acción de eliminación de mi controlador de recursos de la siguiente manera:¿Cómo se prueba una respuesta 204 en RSpec en Rails?

describe ResourceController do 
    context "DELETE destroy" do 
    before :each do 
     delete :destroy, id: @resource.id 
    end 
    it { should respond_with(:no_content) } 
    end 
end 

espero un 204/respuesta sin contenido. Sin embargo, esta prueba falla ya que la respuesta devuelta por el servidor es un 406. La respuesta es 204 cuando presiono el controlador directamente desde mi cliente de prueba de reposo.

Respuesta

7

This página muestra cómo probar el código de respuesta.

describe ResourceController do 
    context "DELETE destroy" do 
    it "should respond with a 204" 
     delete :destroy, id: @resource.id 
     response.code.should eql(204) 
    end 
    end 
end 
+0

la sintaxis está bien. Olvidé mencionar que estoy usando shoulda. Me pregunto si es necesario configurar algunos encabezados cuando se realiza la solicitud de eliminación. –

+0

Por favor, publique el contenido de su controlador. – Gazler

+1

Nota: En Rails 4 al menos, 'response.code' es una cadena, por lo que debe usar' response.code.should eql "204" 'o' response.response_code.should eql 204'. Ver http://api.rubyonrails.org/classes/ActionDispatch/Response.html – Soup

4

Un par de años han pasado ...

me gustaría tener en cuenta que es posible utilizar la sintaxis expect y para consultar el código de estado directamente.

describe ResourceController do 
    context "DELETE destroy" do 
    it "should respond with a 204" 
     delete :destroy, id: @resource.id 
     expect(response).to have_http_status(:no_content) 
    end 
    end 
end 
Cuestiones relacionadas