2016-08-28 4 views
0

ich eine Ansichtsvorlage „show.html.haml“ zu erwarten haben, so etwas wiewie ‚machen template‘ Fehler

- if current_user.admin? 
    balabala 

Es wird „nicht definierte Methode` Server-Betreiber bekommen?‘ für nil: NilClass "während GET #show. Ich habe es mit "- if! Current_user.nil? & & current_user.admin?" Behoben. Und ich möchte einen Testfall mit RSpec hinzufügen.

describe "before login user - " do 

    it "render the show template" do 
    book = FactoryGirl.create(:book) 
    get :show, id: book.id 

    expect(response).to render_template("show") 
    expect(response).to be_success 
    end 
end 

Während run "ist/Rake spec", ist es immer Erfolg, egal, wenn ich den Zustand "! Current_user.nil?" Hinzufügen. Wie kann ich die expect-Klausel schreiben, während ich überprüfen möchte, ob das Rendern der 'show'-Ansicht erfolgreich ist?

Antwort

2

Sie versuchen, Inhalt der Ansicht von controller spec zu testen, können Sie das nicht direkt tun.

Sie können render_views Erklärung verwenden, das zu tun, aber es ist nicht zu empfehlen eher sollten Sie gehen entweder request spec oder feature spec den kompletten Anforderung zu testen - Reaktionszyklus.

Einrichten render_views global:

RSpec.configure do |config| 
    config.render_views 
end 

Spec:

describe "before login user - " do 
    it "render the show template" do 
    book = FactoryGirl.create(:book) 
    get :show, id: book.id 
    expect(response).to render_template("show") 
    expect(response.body).to match /balabala/ 
    end 
end 
0

Sie müssen "Anmelden" in Ihrem spec. Ändern Sie den Code nicht, um den Test zu bestehen. Überprüfen Sie, ob das Rendering erfolgreich ist oder nicht. Überprüfen Sie einfach den Antwortstatus:

expect(response.status).to eq 200 
Verwandte Themen