2011-01-24 100 views
2

我一直在经历迈克尔·哈特尔的教程http://railstutorial.org/,并在大多数情况下它已经在开始使用Rails的一个巨大的帮助。本书非常关注TDD,这很好,因为我想学习TDD,但问题是90%的测试失败,出现错误“电子邮件已被采纳”。我认为发生的情况是,当测试运行时,它会按照本书中的建议创建一个电子邮件为“[email protected]”的用户。问题是当第二个测试运行需要创建一个用户时,它使用相同的“[email protected]”电子邮件地址。我知道有一些解决方法我使用factory girl创建了一系列电子邮件地址,但我不应该这样做才能从教程中正确地运行示例。Ruby on Rails的教程TDD“电子邮件已经采取”

有没有其他人遇到这个问题?由于缺乏关于这个特定主题的问题,我认为这是我的代码中的一个错误,但也许有人遇到过这个问题。

回答

2

卫生署!问题是一条注释行:

config.use_transactional_fixtures = true 

in spec_helper.rb!

新手的错误。

0

你应该在题目搜索,如何在每次试验后清理数据库。问题也可能是由你从装置加载的默认用户造成的,然后当你再次在测试中创建hin时,但如果你说90%,它就好像是第一种情况。 我没有附加链接,因为当你使用rspec,test :: unit或者cucumber时,它们会有所不同,它们每个都有它的特权。

快乐编码!

0

我最近也遇到过这个问题。测试数据库应该在测试后进行清理,但由于某些原因,测试数据库不是。我所做的只是运行'rake db:reset'来重置所有内容,然后确保我使用了工厂(Factory Girl)。只要尝试使用固定装置或工厂,以确保您确实没有碰到数据库。

+0

耙分贝:复位不解决它,我和我使用的厂房为好。 第一次测试的测试结果: 89个示例,49次失败 第二次测试: 89次示例,51次失败 – Adam 2011-01-28 21:44:55

0

我在CH 11的末尾看到了类似的行为。我的spec_helper.rb是正确的。这个固定为我:

重启 “轨道的”
重新启动自动测试
耙分贝:重置
耙分贝:迁移
耙分贝:测试:准备
耙分贝:填充

HTH , 佩里

相关问题