2015-08-31 2 views
2

У меня есть тест на create:Тестирование действия обновления в MiniTest

test "should create article" do 
    assert_difference('Article.count') do 
     post :create, article: {title: "Test", body: "Test article."} 
    end 
    assert_redirected_to article_path(assigns(:article)) 
    end 

Я хочу сделать что-то подобное для update действия.

Моя update действие выглядит следующим образом:

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

    if @article.update(article_params) 
     redirect_to @article 
    else 
     render 'edit' 
    end 
    end 

Я имею в виду что-то вроде:

test "should update article" do 
    patch :update, article {title: "Updated", body: "Updated article."} 
    end 

Но я проблемы: как проверить, моя статья обновляется в MiniTest? И как найти элемент, который я собираюсь обновить? В светильниках есть две статьи.

ответ

1

Вы должны иметь возможность назначить одну из своих статей артефактов переменной и выполнить утверждения в статье после обновления, что-то вроде этого (я не тестировал этот код, это просто для иллюстрации структуры теста):

test "should update article" do 
    article = articles(:article_fixture_name) 
    updated_title = "Updated" 
    updated_body = "Updated article." 

    patch :update, article: { id: article.id, title: updated_title, body: updated_body } 

    assert_equal updated_title, article.title 
    assert_equal updated_body, article.body 
end 

вы можете инициализировать article как переменный экземпляр в методе setup и установите его nil в методе teardown, или как вы управляете установки/демонтажем, чтобы убедиться, что ваше начальное состояние остается последовательным из теста контрольная работа.

Смежные вопросы