2017-02-15 62 views
1

我有此RSpec的文件來運行:導軌5 + FactoryGirl + Rspec的:輔助方法未定義

class FinancialManager::SalaryRecord::SomeRecord < ApplicationRecord 
    sanitize = ->(s) { ActionController::Base.helpers.sanitize(s) } 

    validates :level, 
      presence: true, 
      inclusion: { 
       in: sanitize.call("levels") 
      }, 
      numericality: { only_integer: true } 
end 

模型文件上面調用levels方法:

require 'rails_helper' 

RSpec.describe FinancialManager::SalaryRecord::SomeRecordsController, 
       type: :controller, 
       financial_manager: true, 
       salary_record: true, 
       some_record: true do 

    context "GET #index" do 
    it "assigns all record in instance variable" do 
     some_record = 
     FactoryGirl.create(
      :valid_financial_manager_salary_record_some_record 
     ) 
     get :index 
     expect(assigns(:financial_manager_salary_record_some_records)) 
     .to eq([some_record]) 
    end 
    end 
end 
,其使用該記錄模型

這是我在helpers文件夾中定義的幫助方法。當我運行RSpec的文件,我得到這個錯誤:

Failure/Error: 
     FactoryGirl.create(
     :valid_financial_manager_salary_record_some_record 
     ) 

    NoMethodError: 
     undefined method `levels' for #<FinancialManager::SalaryRecord::SomeRecord:0x000000077f2db0> 

問題是,我怎麼能運行RSpec的測試時使用的輔助方法?我正確使用助手方法嗎?

問候

回答

1

最後,我做了一些谷歌上搜索有關如何調用模型內部的輔助方法,並找到了解決辦法,改變了我的模型到這一點:

class FinancialManager::SalaryRecord::SomeRecord < ApplicationRecord 
    validates :level, 
      presence: true, 
      inclusion: { 
       in: ApplicationController.helpers.levels 
      }, 
      numericality: { only_integer: true } 
end 

系統和RSpec的運行良好

+0

感謝您發佈您的問題的答案,我一直在努力尋找如何從工廠回調調用助手,這工作。 +1。你應該接受你自己的答案^^ – David

相關問題