2014-05-15 92 views
0

控制器:错误RSpec的错误显示

class ProjectsController < ApplicationController 
    before_filter :authenticate_user! 
    load_and_authorize_resource except: :create 
    skip_authorize_resource only: [:update, :destroy] 
    rescue_from ActiveRecord::RecordNotFound, with: :record_not_found 
    respond_to :json 

    def create 
    authorize! :create, Project 
    project = Project.new(project_params) 
    if project.save 
     current_user.add_role(:manager, project) 
     project.colors.create(user_id: current_user.id) 
    end 
    respond_with project, serializer: ProjectSerializer 
    end 
... 

规格:

require 'spec_helper' 
describe ProjectsController do 
    include Devise::TestHelpers 
    include UserHelpers 

    let (:user) { FactoryGirl.create(:user) } 

    before(:each) do 
    # controller.stub(:authenticate_user!).and_return true 
    sign_in user 
    ability_setup 
    end 

    context "create" do 
    it "Can not create project" do 
     @ability.cannot :create, Project 
     project = {name: 'Test project'} 
     post :create, format: 'json', project: project 
     expect(response).to be_success 
    end 
    end 
... 

如果我更改了测试expect(response).to_not be_success最后一行,比一切都OK!但是如果现在这样,我得到

Failure/Error: post :create, format: 'json', project: project 
    NoMethodError: 
     undefined method `authenticate!' for nil:NilClass 

为什么这么奇怪的错误?如果我评论before_filter:authenticate_user!在控制器中,它变得正常 - expected success? to return true, got false

预期(响应)如何影响验证! (它看起来像一个监狱长的方法?)

回答

0

看起来问题出在RSpec中::重试创业板,线:

config.verbose_retry = true 

config.default_retry_count = 3 

导致错误的错误由RSpec的显示使用设备