2012-04-18 29 views
5

Tôi đang cố gắng chuyển từ sử dụng respond_to thành respond_with trong bộ điều khiển Rails. Mọi thứ diễn ra suôn sẻ, ngoại trừ việc kiểm tra các tiết kiệm không hợp lệ trong thông số bộ điều khiển. Dưới đây là một ví dụ:Rails respond_with & Rspec controllers: Kiểm tra cập nhật không thành công

mô tả MyController làm ...

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 

này chỉ hoạt động tốt với cũ hành động cập nhật phong cách respond_to của tôi, nhưng với respond_with, tôi nhận được

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

Vì vậy, trong ngắn - làm thế nào để kiểm tra điều này? ... Hoặc tôi chỉ nên giả sử render_with biết những gì nó đang làm và không thử nghiệm ở tất cả? Bất kỳ đề xuất chung nào?

Cheers trước

PS: Bản cập nhật hoạt động:

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

Trả lời

5

Tôi đã nhìn vào điều này chính xác (làm thế nào tôi tìm thấy chủ đề này) - cho đến nay tôi đã điều sau đây:

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

(nơi Địa điểm là mô hình của tôi có sử dụng respond_with)

tuy nhiên tôi Beli đêm trước phải có một cách tốt hơn để làm điều đó - nếu tôi tìm thấy nó, tôi chắc chắn sẽ đăng nó!

Lưu ý: Tôi cũng đang sử dụng đá phản hồi nên một trong những dòng này có thể không cần thiết cho bạn nếu bạn không sử dụng!

Các vấn đề liên quan