我的控制器中有以下方法:
def create
@job = Job.new(job_params)
if @job.save
render 'create_success', status: :created
else
render 'create_failure', status: :bad_request
end
end
这是我的控制器规格:
require 'rails_helper'
RSpec.describe Api::V1::JobsController, :type => :controller do
let(:actor) { FactoryGirl.create(:user, :service_advisor) }
let(:auth_token) { actor.authentication_token }
describe 'POST #create' do
render_views
context 'with invalid attrubutes' do
let(:job) { FactoryGirl.build(:job, customer_id: nil).attributes }
it 'renders create_failure view' do
expect(response).to render_template :create_failure
end
it 'returns 400 status code' do
expect(response.status).to eq 400
end
end
end
end
然而,出于某种原因,无论我做什么,控制器规格总是认为这个方法返回空响应和状态200.我可以使用postman或curl测试该方法并且它按预期工作 - 返回错误消息和状态代码(201/400),但我的规格总是将其视为具有200状态代码的空响应。
似乎render_views
无效。我的环境是:
ruby 2.0.0p594 Rails 4.1.0 rspec 3.1.5
答案 0 :(得分:4)
您未在测试用例中调用创建操作。
it 'renders create_failure view' do
post :create, job
expect(response).to render_template :create_failure
end