Я пытаюсь написать лучшие тесты с помощью 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
Я уверен, что что-то упускаю. Может кто-то указать мне верное направление?