在使用Codeception Acceptance测试时,我意识到最好的方法是在每次测试之前清理数据库并使每个测试独立。

但是某些Cest测试是相互依赖的。所以,如果我写:

/**
 * @depends createObjectBase
 * @___skip
 */
 public function createObjectMore(AcceptanceTester $I)
 {


由于清理,从createObjectBase测试在数据库中创建的数据不见了。但是createObjectMore测试需要这些数据。

我不能将它们组合为一个测试,因为实际上有多个区域的测试非常不同,因此createObjectMore只是一个占位符。

那么解决这个问题的最佳方法是什么?

最佳答案

也许依赖createObjectBase的Cest可以扩展抽象类(cest?),该类将具有该方法的保护,然后在子Cests中使用@before createObjectbase批注使其在需要该数据的每个方法之前执行。基本上,您每次都必须这样做,因为数据不会在测试之间持久化。

摘录自docs


  您可以使用@before和@after批注控制执行流程。
  您可以将常见操作转移到受保护的(非测试)方法中,
  通过将它们放入测试方法之前或之后调用它们
  注释。通过使用更多方法可以调用几种方法
  多于一个@before或@after注释。方法按顺序调用
  从上到下。

关于php - Codeception清理与依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48008922/

10-13 03:51