2016-11-21 45 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

相關問題