2017-04-21 23 views
0

モデルクラスメソッドをテストしようとしています。こちらのモデルは、RSpecの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.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 

だが、私はRSpecのを実行すると、私はエラーclass_methodを取得しています。私は間違っているのですか?

答えて

1

工場の女の子をbuildにインスタンス化すると、それはclassからインスタンス化されたインスタンスを構築します。何をしたい

Abc::Dbc.class_method(...) 
です