简短版本:使用Yii2高级应用程序模板和Codeception功能测试,有没有办法在特定场景(Cest类)之前加载特定的灯具?
(背景/旁注:我有一种模糊的感觉,我可能会接近这个错误,因为可以说,如果测试应该与db完全隔离,它们应该是单元测试而不是功能测试。但是,由于时间的原因对项目的限制我在推迟单元测试的同时开始进行功能测试。我正在测试一个REST API并且有一个强烈依赖于测试数据的情况,并且在其他测试修改数据时失败。)
我找到的一种方法是编写一个新的_support\ApiHelper
类,扩展默认FixtureHelper
并将loadFixtures()/unloadFixtures()
调用放在_before
而不是_beforeSuite()
。但是,这会使所有灯具在每次测试之前加载,这使得套件的执行速度非常慢。
答案 0 :(得分:3)
我找到了比问题中描述的方法更好的方法:
扩展FixtureHelper
类并添加调用haveCleanDb
的方法unloadFixtures()/loadFixtures()
。然后,在我需要它的Cest场景中,我使用_before
和_after
方法调用它:$I->haveCleanDb()
。这样,所有其他测试仍然很快。