升级到2.1后,Codeception测试失败

时间:2015-09-17 17:22:41

标签: php unit-testing laravel laravel-5 codeception

我目前开发的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分支这样的功能?

1 个答案:

答案 0 :(得分:0)

似乎2.1分支中存在错误。它在2.1.4中也不起作用。将composer.json中的版本设置为2.1.x-dev后,它就开始工作了。

然而2.1分支还有其他问题:

  • 每次测试后不清除缓存
  • 运行大量测试时MySQL的问题太多连接错误

所以目前我建议任何想要使用2.1分支的人使用2.0分支代替Laravel,直到所有问题都得到解决。

您可能还需track this discussion了解更多详情。

修改

我可以确认这些问题已在最新2.1.x-dev中解决,所以现在一切似乎都在2.0分支中工作