2014-12-18 2 views
1

У меня есть следующий метод в моем контроллере:render_views Helper не работает, как ожидалось

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 не работает. Мой окр является:

рубин 2.0.0p594 Rails 4.1.0 RSpec 3.1.5

+0

Вы можете добавить 'puts (response.body)' после первого 'it'? –

+0

Я уже сделал это, он дает мне '' "' – mbajur

+0

, если вы добавляете 'config.render_views' в блок Rspec.configure, ничего не меняется? –

ответ

4

Вы не дали призыв создать действие в тестовом случае.

it 'renders create_failure view' do 
    post :create, job 
    expect(response).to render_template :create_failure 
end 
+0

ха-ха, это, наверное, самая хромая ошибка, которую я когда-либо делал. Спасибо, Швета! – mbajur