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