2017-04-21 97 views
0

我想测试模型类的方法。这里的模型看起来像Rspec:测试模型类方法

class Abc 
    class Dbc < ActiveRecord::Base 
    self.table_name = 'vSomeView' 

    def self.class_method(user_id) 
     Dbc 
     .select('vSomeView.column') 
     .where("vSomeView.UserID = #{user_id}") 
     .first 
    end 
    end 
end 

工厂

FactoryGirl.define do 
    factory :dbc, class: Abc::Dbc do 
    column { 'value' } 
    ... 
    end 
end 

Rspec的

RSpec.describe Abc::Dbc, type: :model do 
    let(:user) { create(:user) } 
    let(:dbc) { build_stubbed(:dbc, user: user) } 

    describe '.class_method' do 
    it 'returns column value' do 
     response = dbc.class_method(user.user_id) 
     expect(response.column). to eq('value') 
    end 
    end 
end 

但我得到错误class_method当我运行rspec的。我做错了什么?

回答

1

当您使用工厂女孩build一个实例时,它将为您创建一个实例化从该class实例化的实例。

你想要的是

Abc::Dbc.class_method(...)