User モデルをテストし、FactoryGirl がどのように機能するかを調べています。user_spec.rbでこれを行うと:
before(:each) do
@user = User.new(username: 'ExampleUser', email: 'user@example.com', timezone: 'Eastern Time (US & Canada)', password: 'example')
end
すべてが合格しますが、もしそうなら:
before(:each) do
@user = FactoryGirl.create(:user)
end
ユーザーのユーザー名と電子メールが既に使用されているかどうかを確認するテストに失敗します。
1) User when username is already taken
Failure/Error: it { should_not be_valid }
expected valid? to return false, got true
# ./spec/models/user_spec.rb:151:in `block (3 levels) in <top (required)>'
2) User when email address is already taken
Failure/Error: it { should_not be_valid }
expected valid? to return false, got true
# ./spec/models/user_spec.rb:142:in `block (3 levels) in <top (required)>'
Finished in 1.8 seconds
29 examples, 2 failures
これらはテストです:
describe 'when email address is already taken' do
before do
user_with_same_email = @user.dup
user_with_same_email.email = @user.email.upcase
user_with_same_email.save
end
it { should_not be_valid }
end
describe 'when username is already taken' do
before do
user_with_same_username = @user.dup
user_with_same_username.username = @user.username.upcase
user_with_same_username.save
end
it { should_not be_valid }
end
誰か説明できますか?FactoryGirl はUser.new
、私の最初の例である のように使用できると考えていました。