2016-11-21 6 views
0

これは多形性関係をテストするための私のコードスニペットです。RSpec respond_toが機能しません

私は次のようにテストを書いた。

require 'rails_helper' 

RSpec.describe Proration, type: :model do 
    let(:invoice_item) { FactoryGirl.create(:proration_invoice_item) } 
    subject { :invoice_item } 

    it { should be_valid } 
    it { should respond_to(:total_amount) } 
    it { should respond_to(:invoice) } 
    it { should respond_to(:itemable) } 
end 

しかし 失敗アウトこのエラー:

1) Proration should be valid 
    Failure/Error: it { should be_valid } 

    NoMethodError: 
     undefined method `valid?' for :invoice_item:Symbol 
    # ./spec/models/proration_spec.rb:7:in `block (2 levels) in <top (required)>' 

    2) Proration Proration should respond to #total_amount 
    Failure/Error: end 
     expected :invoice_item to respond to :total_amount 
    # ./spec/models/proration_spec.rb:16:in `block (3 levels) in <top (required)>' 

    3) Proration Proration should respond to #invoice 
    Failure/Error: end 
     expected :invoice_item to respond to :invoice 
    # ./spec/models/proration_spec.rb:17:in `block (3 levels) in <top (required)>' 

    4) Proration Proration should respond to #itemable 
    Failure/Error: Unable to find matching line in /Users/toshikiinami/Desktop/billing/spec/models/proration_spec.rb 
     expected :invoice_item to respond to :itemable 
    # ./spec/models/proration_spec.rb:18:in `block (3 levels) in <top (required)>' 

任意のアイデアは、この問題を解決するには? (モデルのrespond_toは動作しません。)

答えて

2

あなたはletを使用してinvoice_itemを定義しますが、subjectとして、あなたは、シンボルを使用しています。あなたが代わりに欲しいのは、そのオブジェクトinvoice_itemあるので、

subject{ :invoice_item } 

は感謝すごい

subject{ invoice_item } 
+0

に変更する必要があります!私はいつものようにあなたのサポートに感謝します! – Tosh

関連する問題