Rails response_with & Rspec контроллеры: тестирование неудачного обновления
Я пытаюсь переключиться с использования response_to на response_with в контроллерах Rails. Все идет гладко, за исключением тестирования недействительных сохранений в спецификациях контроллера. Вот пример:
описать MyController сделать...
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
Это прекрасно работает с моим старым действием по обновлению стиля response_to, но с response_with я получаю
Ошибка / Ошибка: response.should render_template("edit")
Итак, вкратце - как мне это проверить? ... Или я должен просто предположить, что render_with знает, что он делает, а не тестирует вообще? Какие-нибудь общие предложения?
Ура заранее
PS: обновление действия:
def update
@style = Style.find(params[:id])
flash[:notice] = "Style updated" if @style.update_attributes(params[:style])
respond_with(@style)
end
1 ответ
Я изучил эту точную вещь (как я нашел эту тему) - пока у меня есть следующее:
Location.any_instance.stub(:valid?).and_return(false)
Location.any_instance.stub(:errors).and_return('anything')
(где Location - моя модель, которая использует response_with)
однако я считаю, что должен быть более хороший способ сделать это - если я найду это, я обязательно опубликую это!
Примечание: я также использую гем респондентов, поэтому одна из этих строк может вам не понадобиться, если вы ее не используете!