2011-10-06 53 views
2

因此,這讓我感到莫名其妙,因爲我無法弄清楚它爲什麼會發生。這隻發生在我的筆記本電腦上(Ubuntu 11.04),而不是其他地方。這臺計算機上的設置似乎有點奇怪。NoMethodError:未定義的方法`belongs_to'爲#<RSpec :: Core :: ExampleGroup :: Nested_4:0xa05d2a0>

我不斷收到以下錯誤,當我跑我的規格:

be rake spec 

給我:

NoMethodError: undefined method `belong_to' for #<RSpec::Core::ExampleGroup::Nested_4:0xb4eb2e4> 
/home/tom/.rvm/gems/[email protected]/gems/rspec-expectations-2.6.0/lib/rspec/matchers/method_missing.rb:9:in `method_missing' 
/home/tom/work/ruby/litdistco-sales/spec/models/sales_item_spec.rb:5:in `block (2 levels) in <top (required)>' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in `instance_eval' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in `block in run' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:107:in `with_around_hooks' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:45:in `run' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:294:in `block in run_examples' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:290:in `map' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:290:in `run_examples' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:262:in `run' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `block (2 levels) in run' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `map' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `block in run' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/reporter.rb:12:in `report' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:21:in `run' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:80:in `run_in_process' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:69:in `run' 
/home/tom/.rvm/gems/[email protected]/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:11:in `block in autorun' 

下面是我的規格文件中的相關線路產生的投訴:

describe SalesItem do 
    it { should belong_to(:publisher) } 
    it { should belong_to(:invoice) } 

我正在運行Rails 3.1.0。這裏是紅寶石-v:

ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux] 

任何提示/想法/想法的建議非常感謝。

+0

是它可能你錯過了寶石?也許'應該'? –

+0

我有應該:/home/tom/.rvm/gems/ruby-1.9.2-p290/gems/shoulda-2.11.3 –

+0

事實上,你有它並不一定意味着它被加載。你是否使用gemfile?嘗試添加以下在您的規範助手p定義?(Shoulda).inspect如果你會錯誤 - 應該沒有正確加載 – Sigurd

回答

11

RSpec核心沒有這樣的匹配器。它看起來像shoulda-matchers。只要確保它安裝在你的spec_helper加載

14

我知道這個要求是舊的,但嘗試在rails_helper.rb

Shoulda::Matchers.configure do |config| 
    config.integrate do |with| 
    with.test_framework :rspec 
    with.library :rails 
    end 
end 
0

您可以編寫規範添加此類似這樣的

describe SalesItem do 
    describe "Associations" do 
    it "belongs_to publisher" do 
     assc = described_class.reflect_on_association(:publisher) 
     expect(assc.macro).to eq :belongs_to 
    end 
    end 
end 
相關問題