使用Codeception Acceptance测试时,我意识到最好的方法是在每次测试之前清理数据库,并使每个测试都独立。
但是一些Cest测试依赖于彼此。所以,如果我写:
/**
* @depends createObjectBase
* @___skip
*/
public function createObjectMore(AcceptanceTester $I)
{
由于清理,在createObjectBase
测试中在数据库中创建的数据已经消失。但是createObjectMore
测试需要这些数据。
我无法将它们合并为一个测试,因为实际上有多个区域具有非常不同的测试,因此createObjectMore
只是一个占位符。
那么最好的办法是什么?
答案 0 :(得分:0)
依赖于createObjectBase
的Cests可以扩展一个抽象(cest?)类,该类将该方法保护为受保护,然后在子Cests中使用@before createObjectbase
注释使其在每个方法之前执行需要这些数据。基本上,你必须每次都这样做,因为数据不会在测试中持续存在。
摘自docs:
您可以使用@before和@after注释来控制执行流程。 您可以将常见操作移动到受保护(非测试)方法和 通过将它们放入测试方法之前或之后调用它们 注释。可以通过使用more来调用多个方法 比一个@before或@after注释。按顺序调用方法 从上到下。