NoMethodError validate_presence_of с использованием shoulda

Хорошо, я сбит с толку. Я пытаюсь использовать shoulda с Test::Unit под Rails 3.1, ранее успешно проделав это с Rails 2.3.11.

У меня есть следующее в моем Gemfile:

group :test do
  gem 'shoulda'
end

(и я запускал bundle install - bundle show shoulda показывает c:/Ruby192/lib/ruby/gems/1.9.1/gems/shoulda-2.11.3)

У меня есть следующий test_helper.rb

ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require 'shoulda'

class ActiveSupport::TestCase
end

и следующий user_test.rb

require 'test_helper'

class UserTest < ActiveSupport::TestCase
  should validate_presence_of :email
  should validate_format_of(:email).with("[email protected]").with_message(/valid email address/)
  should validate_presence_of(:encrypted_password)
  should validate_confirmation_of :password              
end

Но когда я делаю ruby -Itest test\unit\user_test.rb, я получаю следующую ошибку:

 test/unit/user_test.rb:4:in `<class:UserTest>': undefined method `validate_presence_of' for UserTest:Class (NoMethodError)

Что я не правильно настроил?


person Chowlett    schedule 14.09.2011    source источник


Ответы (1)


Решил это. Тебе нужно:

require 'shoulda/rails'

в test_helper.rb (не `требовать 'следует'); и тестовый пример должен быть:

class Usertest < ActiveRecord::TestCase

(не < ActiveSupport::TestCase).

Я пробовал оба по отдельности, но не вместе...

person Chowlett    schedule 15.09.2011