2010-10-08 19 views
15

lorsque je cours rspec spec/models le résultat est OK.Rspec, shoulda et spork ne fonctionnent pas ensemble

Mais quand j'utilise Spork, tous les tests où les macros Shoulda (comme it { should validate_presence_of(:title) } est utilisé avec erreur comme: undefined method 'validate_presence_of' for ...

J'utilise:

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' 
... 

Répondre

15

J'ai eu le même problème. Il a été corrigé en collant require 'shoulda/integrations/rspec2' après avoir demandé rspec/rails dans le bloc prefork.

Vous pouvez également mettre à jour votre Spork à la dernière version (gem 'spork', >= 0.9.0.rc2), puisque je ne l'ai pas essayé ce correctif sur 0.8.4 (même si je suis assez sûr que ça va marcher aussi)

+0

Cela fonctionne! :) Merci, artemave. – boblin

+21

Pour l'actuel shoulda-matcher essayez 'require 'shoulda/matchers/integrations/rspec'' – Zardoz

+0

Vous pouvez trouver de l'aide sur cette page wiki: https://github.com/timcharper/spork/wiki/Spork.trap_method-Jujutsu –

1

Essayez de déplacer le

require "shoulda" 

ligne dans le bloc Spork.each_run. Apparemment, shoulda fait un peu de magie pour inclure les coupleurs dans les groupes d'exemples appropriés.

+0

Merci de l'aide , mais il ne fonctionne pas ;-( – boblin

+0

J'ai déplacé require 'shoulda' dans Sprok.prefork et cela a fonctionné pour moi – santuxus