我目前开发的Laravel 5.1应用程序有超过1400个代码测试。我已经使用过Codeception 2.0.15。但是今天我已经转向Codeception 2.1.2了。我已经更新了api.suite.yml
和其他套件配置文件,但现在很多测试都失败了。
我注意到的第一件事是memcached中的数据在测试后不再被清除,因此此时的测试会相互影响。但不仅如此。在其中一个测试中,我运行了类似的东西:
public function tryToCompareClient(UnitTester $I)
{
$data = [
'client1' => [
'id' => 500,
'option1' => 'yes',
],
'client2' => [
'id' => 600,
'option2' => 'no',
],
];
Config::set('crm_settings.clients', $data);
$crm = App::make('crm');
$I->assertTrue($crm->isClient('client1', $data['client1']['id']));
// ...
当我只运行此测试时,它工作正常,但是当我运行多组测试时,此测试将失败,因为crm
在我的应用程序中是单例,而且当我在上面的测试中设置新配置时,此类不是每次都从config加载数据,而是仅在没有设置时。似乎在Codeception / Laravel5模块中已经更改了某些内容,因此App
实例在测试之间被重用。
目前我认为这些问题会受到this commit中重构的影响,但问题是 - 是否有任何简单的方法使Codeception像以前一样工作2.1.2或者唯一的方法是使用旧的2.0分支这样的功能?
答案 0 :(得分:0)
似乎2.1分支中存在错误。它在2.1.4中也不起作用。将composer.json
中的版本设置为2.1.x-dev
后,它就开始工作了。
然而2.1分支还有其他问题:
所以目前我建议任何想要使用2.1
分支的人使用2.0
分支代替Laravel,直到所有问题都得到解决。
您可能还需track this discussion了解更多详情。
修改强>
我可以确认这些问题已在最新2.1.x-dev
中解决,所以现在一切似乎都在2.0分支中工作