【问题标题】:Do not impact database with test不要用测试影响数据库
【发布时间】:2011-12-02 17:24:56
【问题描述】:

在 symfony 1.x 中,使用一些代码可以在不修改数据库的情况下运行测试。例如,我的一项测试测试用户的注册。执行此测试后,该用户始终在数据库中。 我们如何在不永久修改数据库的情况下执行测试?

【问题讨论】:

  • 跟踪您的修改并在之后撤消它们。或者创建一个测试数据库。一旦你修改了数据库,它就被修改了——没有“撤消”按钮。所以你必须建立一个你自己。如果您插入一行,请稍后将其删除。如果您修改了一行,请先选择它并存储它,然后再将其放回原处。如果你删除一个也一样。或者(更好)有一个反映实时数据库的测试数据库,并用它进行测试。
  • 哎呀,在 sf 1.x 中这不是更好的方法吗?我认为测试数据库更好,但我必须在每次测试之间重新初始化她以确保安全不是吗? ://

标签: php symfony functional-testing


【解决方案1】:

首先,有this Alexandre 的优秀文章描述了如何在每次测试后回滚数据库。

还有可能使用 sqlite 作为测试数据库,因为它在内存中,因此速度更快。 This article 描述了如何做到这一点。如果您需要在测试之间处理数据,例如创建一个对象然后对其进行编辑,这种方法很方便。这不是好的做法,但有时没有办法。

我使用拆分方法,使用 sqlite 数据库来提高速度,并按照 Alexandre 的描述在每次测试后进行回滚。效果很好:-)

【讨论】:

  • 谢谢!我使用第一个链接(Alexandre Salome 博客)并且它有效。我对教义有疑问(使用教义检索的某些实体没有“链接”:“通过关系找到了一个新实体......”)但如果它链接到这个脚本,我不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
相关资源
最近更新 更多