如何在rails中编写JSON API的测试用例[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在rails中编写JSON API的测试用例[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我已经为主题控制器编写了一个API,它将执行所有的crud操作。我需要使用Rspec测试api。对于索引操作,我已经为http状态编写了一个测试用例。此外,我需要检查索引页面正确呈现的天气。用于索引操作的Topic Api控制器是这样的:

class Api::V1::TopicsController < ApplicationController
  def index
    @topics = Topic.all
    render json: @topics,status: 200
  end
end

主题控制器索引操作的Rspec是:

RSpec.describe Api::V1::TopicsController do
describe "GET #index" do
before do
  get :index
end
it "returns http success" do
  expect(response).to have_http_status(:success)
  ////expect(response).to render_template(:index)
end
end
end

运行测试时,它显示我在评论中提到的上述代码行的错误消息。

Api::V1::TopicsController GET #index returns http success
 Failure/Error: expect(response).to render_template(:index)
   expecting <"index"> but rendering with <[]>

怎么解决?错误:

  TypeError: no implicit conversion of String into Integer

0) Api::V1::TopicsController GET #index should return all the topics
   Failure/Error: expect(response_body['topics'].length).to eq(2)

   TypeError:
   no implicit conversion of String into Integer
答案

您可以测试控制器操作的API响应,只是index操作的参考。

describe TopicsController do

  describe "GET 'index' " do

    it "should return a successful response" do
      get :index, format: :json
      expect(response).to be_success
      expect(response.status).to eq(200)
    end

    it "should return all the topics" do
      FactoryGirl.create_list(:topic, 2)
      get :index, format: :json
      expect(assigns[:topics].size).to eq 2
    end

  end

end

以上是关于如何在rails中编写JSON API的测试用例[重复]的主要内容,如果未能解决你的问题,请参考以下文章

模拟 API 响应时如何在单元测试中使用 JSON 文件

如何使用 junit 为 JPA REST API 编写测试用例?

在模拟API响应时,如何在单元测试中使用JSON文件

Rails 为 json api 请求返回不正确的 MIME 类型(仅在测试中)

api测试用例(编写思路)

如何在scala akka(spray)中为rest服务编写测试用例