2017-02-15 69 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

相关问题