Rspec, shoulda и spork не работают вместе

когда я запускаю rspec spec/models результат в порядке.

Но когда я использую spork, каждый тест, в котором должны быть макросы (например, it { should validate_presence_of(:title) }, используется FAILS с ошибкой, например: undefined method 'validate_presence_of' for ...

Я использую:

rails (3.0.0)
shoulda (2.11.3)
spork (0.8.4)
rspec-rails (>= 2.0.0.beta.22)

spec / spec_helper.rb:

require 'rubygems'
require 'spork'

Spork.prefork do
  # This file is copied to spec/ when you run 'rails generate rspec:install'
  ENV["RAILS_ENV"] ||= 'test'
  require File.expand_path("../../config/environment", __FILE__)
  require 'rspec/rails'
  require 'shoulda'
...

person boblin    schedule 08.10.2010    source источник


Ответы (2)


Я была такая же проблема. Исправлено залипанием require 'shoulda/integrations/rspec2' после запроса rspec/rails в блоке prefork.

Вы также можете обновить свой spork до последней версии (gem 'spork', >= 0.9.0.rc2), так как я не пробовал это исправление в 0.8.4 (хотя я почти уверен, что это тоже сработает)

person artemave    schedule 19.10.2010
comment
Для текущего соответствия, попробуйте require 'shoulda/matchers/integrations/rspec' - person Zardoz; 02.04.2011
comment
Вы можете найти справочную информацию на этой вики-странице: github.com/timcharper/spork/ wiki / Spork.trap_method-Jujutsu - person Tim Harper; 27.05.2011
comment
Для меня это сработало: требуется 'shoulda / matchers / integrations / rspec' - person Federico; 07.03.2012

Попробуйте переместить

require "shoulda"

строку в блок Spork.each_run. По-видимому, shoulda творит чудеса, чтобы включить сопоставителей в соответствующие группы примеров.

person Jacob    schedule 10.10.2010
comment
Я переместил require 'shoulda' в Sprok.prefork, и у меня это сработало. - person santuxus; 09.03.2012