我正在开发一个JSON API,并且正在尝试为show方法编写集成测试。问题是我不知道如何测试响应。下面我有assert_response :success
,但这条线似乎总是过去了,也就是它不应该过去(例如将@author1
而不是@article1
发布到show_articles_path
时,这应该是'{1}}工作)。
我应该使用什么断言来测试它是否成功显示?
路线:
show_articles POST /articles/show/:id(.:format) articles#show
测试:
test "should get show" do
post show_articles_path(@article1, article: {author_id: @author1.id })
assert_response :success
end
方法:
def show
@author = Author.find(params[:article][:author_id])
article = Article.find(params[:id])
render json: article
end
答案 0 :(得分:2)
我会使用fixtures。在test / fixtures下创建一个文件夹并将文件放在那里。通常,我使用ERB模板,但很多人使用YAML。这是一个简单的例子:
<% bar ||= "bar's default value %>
{
"foo": "<%= bar %>",
"baz": "quux"
}
虽然bar
具有默认值,但您可以在加载灯具时对其进行参数化。您可以将代码中的响应主体与夹具中的渲染文本进行比较。
你也可以循环迭代:
<% 1000.times do |n| %>
"username": "<%= "user#{n}" %>"
"email": "<%= "user#{n}@example.com" %>"
<% end %>