如何用正确的json声明它渲染?

时间:2016-01-18 18:50:19

标签: ruby-on-rails json ruby-on-rails-4 testing integration-testing

我正在开发一个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

1 个答案:

答案 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 %>