我测试了create
:
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中更新?以及如何找到我要更新的项目?在灯具中我有两篇文章。
答案 0 :(得分:1)
您应该能够将一个fixture文章分配给变量并在更新后的文章上运行断言,类似这样(我没有测试过这段代码,只是为了说明测试结构):
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
,或者您正在管理设置/拆解以确保您的起始状态在测试之间保持一致。