2012-04-18 14 views
5

Próbuję przełączyć z użycia respond_to na respond_to w kontrolerach Rails. Wszystko idzie gładko, z wyjątkiem testowania nieprawidłowych zapisów w specyfikacji kontrolera. Oto przykład:Szyny respond_with & Kontrolery Rspec: Testowanie niepomyślnej aktualizacji

opisać MyController zrobić ...

describe "PUT update" do 
    context "with invalid attributes" do 
     it "should re-render the edit page" do 
     style = stub_model(Style) 
     Style.stub(:find) { style } 
     Style.any_instance.stub(:save).and_return(false) 
     put :update 
     response.should render_template(:edit) 
     end 
    end 
    end 
end 

To działa dobrze z moim starym stylu respond_to działania aktualizacji, ale z respond_with, mam

Failure/Error: response.should render_template("edit")

Tak więc, w krótki - jak to przetestować? ... Czy powinienem po prostu założyć, że render_with wie, co robi i nie testuje w ogóle? Jakieś ogólne sugestie?

Cheers wyprzedzeniem

PS: Akcja zmiana:

def update 
    @style = Style.find(params[:id]) 
    flash[:notice] = "Style updated" if @style.update_attributes(params[:style]) 
    respond_with(@style) 
    end 

Odpowiedz

5

Szukałem na taką rzecz (jak znalazłem ten temat) - do tej pory mam następujące:

Location.any_instance.stub(:valid?).and_return(false) 
Location.any_instance.stub(:errors).and_return('anything') 

(gdzie Lokalizacja jest mój model, który wykorzystuje respond_with)

jednak ja Beli Wcześniej musi być lepszy sposób - jeśli znajdę, na pewno go opublikuję!

Uwaga: Używam również klejnotu odpowiadającego, więc jedna z tych linii może nie być potrzebna, jeśli go nie używasz!

Powiązane problemy