我正在做 Rspec 功能,以测试一些用户情景和我收到的错误消息︰

Internal Server Error uninitialized constant Tree::MY_BRAnCH

现在,我知道因为表"树"没有适当的行,但仅在套件测试运行时无法正常工作,则测试失败。

  RAILS_ENV=test bundle exec rspec spec/

指向作为负责任的 articles_spec.rb 文件。但是,如果我运行只是功能文件︰

RAILS_ENV=test bundle exec rspec spec/features/articles_spec.rb

测试过程很好。深入在代码请参见其他开发人员所做的测试表明︰

before { truncate(Tree) }

因此,该测试首先执行,则在表中删除数据。

我的问题是︰ 如何可以避免这种情况?需要我重新加载之前 rspec 的每个文件的所有数据库?

还是什么策略应我们遵循一定 rspec 测试不会影响其他开发人员?

2014-12-31 00:00:00
问题评论:

回答:

它看起来不大可能截断数据库表将导致uninitialized constant出错。更可能的是, articles_spec.rb会导致Tree::MY_BRAnCH来定义。这正是为什么运行单独的刀路的articles_spec.rb一些运行整个规范套件时,尝试使用常量之前定义,因此uninitialized constant.

一个解决方案就是搜索您基本代码为Tree::MY_BRAnCH的用法,并确保它具有已定义之前使用它。您可能需要了解有关一个或多个加载技术的以下代码︰

内容来源于Stack Overflow Modularity and tables on Rspec (RoR)
请输入您的翻译

Modularity and tables on Rspec (RoR)

确认取消