Codeception清理与依赖

时间:2017-12-28 14:04:43

标签: php testing codeception

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

但是一些Cest测试依赖于彼此。所以,如果我写:

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

由于清理,在createObjectBase测试中在数据库中创建的数据已经消失。但是createObjectMore测试需要这些数据。

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

那么最好的办法是什么?

1 个答案:

答案 0 :(得分:0)

依赖于createObjectBase的Cests可以扩展一个抽象(cest?)类,该类将该方法保护为受保护,然后在子Cests中使用@before createObjectbase注释使其在每个方法之前执行需要这些数据。基本上,你必须每次都这样做,因为数据不会在测试中持续存在。

摘自docs

  

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