私は現在、Rails(4.1.8)に関するプロジェクトをまとめています.APIルートをテストするためのRSpec要求仕様の作成を試みています。しかし不思議にも、テストを実行すると空の応答が返ってくるようですが、Postmanで直接要求するとjsonデータが期待どおりに返されます。RSpec要求仕様テストは常に空の応答を返します
要求スペック:
# spec/requests/tasks_spec.rb
require 'rails_helper'
RSpec.describe 'Tasks API', type: :request do
render_views
describe 'GET /tasks' do
it 'returns tasks' do
headers = {
"ACCEPT" => "application/json"
}
get '/tasks', headers
puts "Response: #{response}"
expect(response.content_type).to eq("application/json")
expect(json).not_to be_empty
end
end
end
結果:
class TasksController < ApplicationController
before_action :set_task, only: [:show, :update, :destroy]
# GET /tasks
def index
@tasks = Task.all
json_response(@tasks)
end
応答懸念:
module Response
def json_response(object, status = :ok)
render json: object, status: status
end
end
を次のように
Failure/Error: expect(json).not_to be_empty
expected `[].empty?` to return false, got true
タスクコントローラが設定され
仕様のサポート:私はrende_views修正について話同様の質問を読んでいた
module RequestSpecHelper
# Parse JSON response to ruby hash
def json
JSON.parse(response.body)
end
end
- 私は効果なしとすることを追加しましたし、また、私は彼らのように要求仕様を使用するときにこれらを必要としなかったと思ったが完全なスタックを実行する必要がありますか?誰もが、いくつかの光を放つことができる、非常に新しい仕様を要求し、少し戸惑う。
'puts"すべてのタスクを追加してください:#{Task.count} "'出力をチェックして、あなたのテストデータベースが空であることを確信しています。 –