При проверке ActiveRecord я получаю действительный? => false, но ошибок в error.count нет. Как так? - PullRequest
4 голосов
/ 04 июня 2009

При создании ActiveRecord в rspec я использую данные для правильных записей. Но при использовании fxitures в тестах они, похоже, не проходят проверку. В следующем примере работник кажется совершенно корректным, и все же соответствующая проверка в спецификации говорит, что он недействителен.

class Employee < ActiveRecord::Base
  validates_presence_of     :email
end

class User < ActiveRecord::Base
  validates_associated      :employee
end

#Command line debugger in 'debugger' (below) returns:
Employee.find(745185059).errors.count         # => 0
Employee.find(745185059).errors.full_messages # => []
Employee.find(745185059).valid?               # => true

Например:

describe SessionsController do
  fixtures :users, :employees

  describe "Logging in by cookie" do
    def set_remember_token token, time
      @user[:remember_token]            = token; 
      @user[:remember_token_expires_at] = time
      debugger
      @user.save! # THIS SAYS THE EMPLOYEE IS INVALID, but why, if the fixtures are good?
    end    
    it 'logs in with cookie' do
      stub!(:cookies).and_return({ :auth_token => 'hello!' })
      logged_in?.should be_true
    end
  end
end

Есть идеи, почему я получаю ошибку проверки? (Конечно, я вырезал много среднего кода, возможно, что ошибка полностью в другом месте)

1 Ответ

6 голосов
/ 04 июня 2009

Вы можете отлаживать @user после .save (без взрыва!), Который должен добавить ошибки, это может быть вызвано обратным вызовом модели или чем-то, что делает ваш метод validate. В своем тесте просто выполните:

@user.save
puts @user.errors.inspect # or your command line debugger

и прочитайте вывод при запуске теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...