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)

однако я считаю, что должен быть более хороший способ сделать это - если я найду это, я обязательно опубликую это!

Примечание: я также использую гем респондентов, поэтому одна из этих строк может вам не понадобиться, если вы ее не используете!

Другие вопросы по тегам