Интеграционное тестирование с Ruby и ключевым словом assigns - PullRequest
2 голосов
/ 07 декабря 2010

Я пытаюсь выполнить интеграционное тестирование, чтобы увидеть, обновляется ли статья. Вот мой интеграционный тест:

test "update existing article" do 

    # create an article 
    @article = Article.new 
    @article.title = "title"
    @article.abstract = "abstract"
    @article.description = "description" 

    if @article.save 

      post "/articles/edit", :id => @article.id

      assert assigns(:article)

    end

  end

А вот моя реализация article_controller:

def edit

    @article = Article.find(params[:id])

    respond_to do |format|
      format.html 
      format.xml { render :xml => @article }
    end

  end

Последняя строка в тесте о назначениях завершается неудачей. Из моего понимания assigns (: article) означает, что переменная @article будет заполнена.

1 Ответ

2 голосов
/ 07 декабря 2010

Посмотрите на эту строку:

post "/articles/edit", :id => @article.id

Проблема в том, что действие редактирования занимает GET, а не POST, поэтому оно, вероятно, никогда не будет вызвано. попробовать:

get edit_article_path, :id => @article.id

(обратите внимание, что если вы запускаете тест контроллера, лучше использовать символ для имени действия.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...