rspec と factory girl を使ってより良いテストを書こうとしています。ユーザー モデルをテストしようとしていますが、最初のテストが何度も失敗します。認証システムに Sorcery を使用していますが、ファクトリの記述方法の例があまり見つかりません。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)>'
user_spec.rb の 6 行目はFactoryGirl.create(:user).should be_valid
私は何かが欠けていると確信しています。誰かが私を正しい方向に向けることができますか?