开发者

adding index to email column culprit for unit tests failing

I am new to devise and rails and I just integrated devise with my sample app. What I noticed is after creating a user model, all my unit tests were failing. I went to try to narrow this and found that even the generated assert 'the truth' one for user_test.rb also fails:

ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: \
    column emai开发者_开发技巧l is not unique: INSERT INTO "users" (...

Once I commented out the add_index ...

# add_index :users, :email, :unique => true

... and re-ran rake db:test:load and re-run tests with ruby -I test test/unit/user_test.rb it passes.

Has anyone else experience this?


If you just generated the devise model, a fixture was also generated with more or less this content:

one: {}
# column: value
#
two: {}
#  column: value

This fixture tries to create two users, with the same (inexistant) email. Replace it by:

one:
  email: test1@test.com

two:
  email: test2@test.com

It will fix this error.


The failure would have to be happening in the test setup, before the actual test. You are probably trying to set up users with identical email addresses, either via fixtures or factories.

If you are using fixtures, make sure each user is given a different email address. If you are using factories, use a sequence to generate a unique email addresses for each user that's created.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜