2016-03-27 11 views
0

Ich verwende Rails 4.2.5, ich habe einen Controller-Test für die Zerstörung Aktion geschrieben, ein Ich benutze Ajax-Aufruf zu zerstören und die Datei destroy.js.erb zu verwenden. Bitte helfen Sie mir, das folgende Problem zu lösen, um den Test zu bestehen, wenn es js Format aufruft, ich klebe Fehler unten.Controller-Test mit JSERB-Format

def destroy 
    @status = @song.destroy 
    respond_to do |format| 
     format.js 
    end 
    end 

SongsControllerTest # test_should_destroy_song:

ActionController::UnknownFormat: ActionController::UnknownFormat 
     app/controllers/songs_controller.rb:36:in `destroy' 


songs_controller_test.rb  
test "should destroy song" do 
    assert_difference('Song.count', -1) do 
     delete :destroy, id: @song 
    end 

    get :destroy, format: 'js' 
    end 

destroy.js.erb

var element = document.getElementById("<%="song#{@song.id}" %>");  
<%if @status%> 
element.parentNode.parentNode.remove(); 
<%end%> 
+0

Bitte formatieren Sie den Code in der Frage entsprechend und zeigen Sie auch den Testcode an. – BoraMa

+0

Mögliches Duplikat von [In Rails, wie testen Sie ein JavaScript-Antwortformat?] (Http://stackoverflow.com/questions/2358214/in-rails-how-do-you-functional-test-a-javascript-) Antwort-Format) – BoraMa

+0

Bereits vor dem Stellen der Frage ive versuchte oben Link, löste es nicht den Fehler –

Antwort

2

Die destroy Controller-Aktion normalerweise reagiert auf die DELETE HTTP-Methode, so sollten Sie die format Option verwenden, wenn Rufen delete:

test "should destroy song" do 
    assert_difference('Song.count', -1) do 
    delete :destroy, id: @song, format: :js 
    end 
end