私は Rails に次のクラスを持っており、いくつかの rspec テストを書いています (私は rspec の初心者なので、どんな批評でも大歓迎です)。
クラス User.rb
class User < ActiveRecord::Base
email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, :presence => true ,
:format => { :with => email_regex },
:uniqueness => { :case_sensitive => true },
:on => :create
end
そして factory.rb で
FactoryGirl.define do
factory :user do
sequence(:name) { |n| "my-name#{n}" }
sequence(:email) { |n| "blue#{n}@12blue.com" }
end
end
そして私のrspec(users_spec.rb)では:
require 'spec_helper'
describe User do
let(:user) { FactoryGirl.build(:user) }
it { user.should be_valid }
it { user.should be_a(User) }
it { user.should respond_to(:email) }
it { user.email = " " }
it { user.should_not be_valid } # this is causing the error
end
そして得る
1) User
Failure/Error: it { user.should_not be_valid }
expected valid? to return false, got true
ただし、検証に基づいて、ユーザーは有効ではないはずです。ここで何が起こっているのですか?何が得られないのですか (そして、それが私のせいであることはわかっています)?
どうも