NoMethodError: неопределенный метод `own_to 'для # <RSpec :: Core :: ExampleGroup :: Nested_4: 0xa05d2a0> - PullRequest
3 голосов
/ 06 октября 2011

Так что это отчасти сбивает меня с толку, так как я не могу понять, почему это происходит.Это происходит только на моем ноутбуке (Ubuntu 11.04), а не где-либо еще.Я просто, кажется, что-то странное с настройкой на этом компьютере.

Я продолжаю получать следующую ошибку при запуске моих спецификаций:

be rake spec

Дает мне:

NoMethodError: undefined method `belong_to' for #<RSpec::Core::ExampleGroup::Nested_4:0xb4eb2e4>
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/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/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in `instance_eval'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in `block in run'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:107:in `with_around_hooks'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:45:in `run'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:294:in `block in run_examples'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:290:in `map'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:290:in `run_examples'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:262:in `run'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `block (2 levels) in run'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `map'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `block in run'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/reporter.rb:12:in `report'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:21:in `run'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:80:in `run_in_process'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:69:in `run'
/home/tom/.rvm/gems/ruby-1.9.2-p290@litdistco/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.Вот ruby ​​-v:

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

Любые советы / мысли / идеи с благодарностью.

Ответы [ 4 ]

20 голосов
/ 26 ноября 2015

Попробуйте добавить это в rails_helper.rb

Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
  end
end
11 голосов
/ 06 октября 2011

В ядре RSpec такого сопоставителя нет.Похоже на musta-matchers .Просто убедитесь, что он установлен и загружен в ваш spec_helper

2 голосов
/ 23 марта 2019

У меня были проблемы с этим некоторое время, а затем я изменил свою спецификацию с:

describe ModelName do
  it { should belong_to(:model)}
end

до:

RSpec.describe ModelName, type: :model do
  it { should belong_to(:model)}
end

и вдруг сработало

2 голосов
/ 03 декабря 2016

Вы можете написать спецификации, как это

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...