0
  1. 我有几个复杂的对象要存根(我使用的宝石实例)。我在哪里可以集中这些存根以使它们可用于所有测试?

  2. 如何在没有 rake:test 的情况下以编程方式清除测试之间的数据库?我想通过 textmate 快速运行单个测试,但是这样做会出错,因为它不会在测试之间清除数据库

  3. 测试运行缓慢,因为它必须启动一个 Rails 实例。如何加快测试速度?特别是在编写测​​试并希望快速运行更改时

4

1 回答 1

2

1)您可以将它们放在 test_helper.rb 中以使它们可用于所有测试,或者您可以编写自己的包含这些方法的模块,然后将该模块包含在需要这些存根的测试中。

2)您可以在您的测试设置方法中放入Model.destroy_all(或者.delete_all如果合适的话,这会更快)以去除您不再感兴趣的那些模型。

但是,如果您在事务中运行测试(并且您的数据库支持事务),那么您不需要清除任何数据,因为数据的创建和测试将在事务中运行,然后将回滚清除数据自动地。

3)对这个不太确定。我在 Windows 上经常遇到这个问题,但在 *nix 上却没有这么多。您可以研究某种持续测试,但反馈仍然会有延迟。可能值得调查导致 Rails 环境启动如此缓慢的原因 - 这可能是您可以在测试环境中跳过的内容。

于 2010-08-12T08:59:15.633 回答