Я пытаюсь использовать rspec3 в первый раз с новым приложением. Я определил две простые модели:Тестирование has_many с помощью toa-matchers с использованием rspec3
class Match < ActiveRecord::Base
end
class Article < ActiveRecord::Base
has_many :matches
end
Когда я получить доступ к этим моделям из консоли, я могу создавать ассоциации и хранить их в БД, как и ожидалось. Но, когда я пытаюсь запустить спецификацию, чтобы проверить это, кажется, не работает:
require 'spec_helper'
describe Article do
it { is_expected.to have_many(:matches) }
# it { should have_many(:matches) }
end
Я попытался запустить как версию isexpected
и версию теста should
, но в обоих случаях я получаю следующее сообщение об ошибке:
> ./bin/rspec spec/models/article_spec.rb
Warning: Running `gem pristine --all` to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring.
F
Failures:
1) Article should have many :matches
Failure/Error: it { is_expected.to have_many :matches }
expected #<Article:0x007fa14c276f38> to respond to `has_many?`
# ./spec/models/article_spec.rb:4:in `block (2 levels) in <top (required)>'
# -e:1:in `<main>'
Finished in 0.09484 seconds (files took 0.63853 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/models/article_spec.rb:4 # Article should have many :matches
Randomized with seed 24636
Вот соответствующие зависимости в Gemfile.lock:
rspec-core (3.0.4)
rspec-support (~> 3.0.0)
rspec-expectations (3.0.4)
rspec-support (~> 3.0.0)
rspec-mocks (3.0.4)
rspec-support (~> 3.0.0)
rspec-rails (3.0.2)
rspec-core (~> 3.0.0)
rspec-expectations (~> 3.0.0)
rspec-mocks (~> 3.0.0)
rspec-support (~> 3.0.0)
rspec-support (3.0.4)
spring-commands-rspec (1.0.2)
rspec-rails (~> 3.0.0)
spring-commands-rspec
...
shoulda-matchers (2.7.0)
shoulda-matchers
Похоже, что это должно быть довольно прямо вперед. Я делаю что-то неправильно, что заставляет меня получить эту ошибку?
Интересная мысль, но, к счастью, я получаю ту же самую точную ошибку, когда я так делаю. Также стоит отметить, что с rspec2 мне никогда не приходилось определять тему явно, чтобы иметь возможность использовать сопоставления ассоциаций таким образом. –
Можете ли вы разместить сообщение об ошибке? – zetetic
Ой, вы правы, я забыл, как работают помощники-помощники. Я удалю этот ответ, но вы могли бы добавить версию Rails и RSpec? У меня есть код, работающий на Rails 4.1.5 и RSpec 3.1.5 – zetetic