我一直在阅读Michael Hartl的教程http://railstutorial.org/,并且在大多数情况下,它对Rails入门起了很大帮助。这本书非常关注TDD,这很棒,因为我想学习TDD,但问题是90%的测试都失败了,错误是“电子邮件已被采用”。我认为正在发生的事情是,当测试运行时,它会创建一个用户,其电子邮件为“user@example.com”,如书中所示。问题是当第二个测试运行需要创建用户时,它使用相同的“user@example.com”电子邮件地址。我知道有一些变通方法我已经看到使用工厂女孩创建一系列电子邮件地址,但我不应该这样做以使教程中的示例正常工作。
还有其他人遇到过这个问题吗?从对这个特定主题缺乏问题来判断,我认为这是我的代码中的一个错误,但也许有人遇到过这个问题。
答案 0 :(得分:2)
卫生署!问题是注释:
config.use_transactional_fixtures = true
在spec_helper.rb中!
新手的错误。
答案 1 :(得分:1)
为您的测试清理数据库的有用资产:
答案 2 :(得分:0)
您应该在每个测试后搜索主题以了解如何清理数据库。问题可能也是由你从灯具加载的默认用户引起的,然后当你再次在测试中创建了hin,但如果你说90%它似乎是第一种情况。 我没有附加链接,因为当你使用rspec,test :: unit或者黄瓜时它们会有所不同,每个都有它的特权。
快乐的编码!
答案 3 :(得分:0)
我最近也遇到过这个问题。测试DB应该在测试后清洗,但由于某种原因它不是。我所做的只是运行'rake db:reset'重置所有内容,然后确保我使用的是工厂(Factory Girl)。只是尝试使用固定装置或工厂,这样你就可以确定你实际上并没有进入数据库。
答案 4 :(得分:0)
我在CH 11结束时看到了类似的行为。我的spec_helper.rb是正确的。这为我解决了这个问题:
重启“rails s”
重新启动自动测试
rake db:reset
rake db:迁移
rake db:test:准备
rake db:populate
HTH, 佩里