Фабрика пользователей Волшебства недействительна

Я пытаюсь написать лучшие тесты с помощью rspec и factory girl. Я пытаюсь протестировать свою пользовательскую модель, но мой первый тест продолжает давать сбой. Я использую Sorcery для своей системы аутентификации, но не могу найти слишком много примеров того, как написать фабрику. Я получил подсказку от проблемы в волшебном репозитории github, но тест все еще не проходит.

Вот моя фабрика пользователей:

# spec/factories/users.rb

FactoryGirl.define do
  salt = "asdasdastr4325234324sdfds"
  factory :user do
     sequence(:username)   { |n| "testuser#{n}" }
     slug              :username
     email                 { "#{username}@example.com" }
     password              "secret"
     password_confirmation "secret"
     salt                  salt
     crypted_password      Sorcery::CryptoProviders::BCrypt.encrypt("secret", salt)
     admin                 false
   end
 end

Это тест модели:

# spec/models/user_spec.rb
require 'spec_helper'

describe User do
   it "has a valid factory" do
     FactoryGirl.create(:user).should be_valid
   end
end

Вот модель пользователя:

class User < ActiveRecord::Base
  authenticates_with_sorcery!

  # Use FriendlyId for better URLs
  extend FriendlyId
  friendly_id :username, :use => :slugged
  attr_accessible :username, :email, :password, :password_confirmation, :weburl, :time_zone, :bio

  validates_confirmation_of :password
  validates_presence_of :password, :on =>:create
  validates_presence_of :username
  validates_presence_of :email
  validates_uniqueness_of :username
  validates_uniqueness_of :email
end

И вот ошибка, которую я получаю:

1) User has a valid factory
 Failure/Error: FactoryGirl.create(:user).should be_valid
  expected valid? to return true, got false
 # ./spec/models/user_spec.rb:6:in `block (2 levels) in <top (required)>'

Строка 6 файла user_spec.rb: FactoryGirl.create(:user).should be_valid

Я уверен, что что-то упускаю. Может кто-то указать мне верное направление?


person Angela Mancini    schedule 23.08.2012    source источник
comment
Можете ли вы включить код своей пользовательской модели и, в частности, часть проверки?   -  person Chris Salzberg    schedule 24.08.2012
comment
Я отредактировал свой вопрос, включив в него модель пользователя.   -  person Angela Mancini    schedule 24.08.2012


Ответы (1)


Фабрика говорит, что Пользователь недействителен. Чтобы понять почему, проверьте ошибки.

user = Factory.build(:user)
user.valid? # => false
user.errors.should be_empty # => fails, and prints the error hash
person zetetic    schedule 24.08.2012