升级到5.4后,无法在Laravel BrowserKit包中找到PHPUnit\Framework\Constraint\Constraint

Mat*_*aly 5 laravel laravel-testing laravel-5.4

我正在将旧的Laravel个人项目从5.2升级到5.4.升级到5.3似乎已经没问题,但现在我已经转向5.4我遇到了一个问题.

该项目使用了旧的测试层,因此我安装了BrowserKit测试包以保持向后兼容性.我还为Browserkit测试创建了以下基本测试用例:

<?php

namespace Tests;

use Laravel\BrowserKitTesting\TestCase as BaseTestCase;

abstract class BrowserKitTestCase extends BaseTestCase
{
    use CreatesApplication;

    public $baseUrl = 'http://localhost';
}
Run Code Online (Sandbox Code Playgroud)

使用正常测试用例的模型测试工作正常,但是当我运行任何使用BrowserKit测试用例的测试时,我看到以下错误消息:

PHP Fatal error:  Class 'PHPUnit\Framework\Constraint\Constraint' not found in /home/matthew/Projects/myproject/vendor/laravel/browser-kit-testing/src/Constraints/PageConstraint.php on line 10
PHP Fatal error:  Uncaught Illuminate\Contracts\Container\BindingResolutionException: Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable. in /home/matthew/Projects/myproject/vendor/laravel/framework/src/Illuminate/Container/Container.php:895
Stack trace:
#0 /home/matthew/Projects/myproject/vendor/laravel/framework/src/Illuminate/Container/Container.php(735): Illuminate\Container\Container->notInstantiable('Illuminate\\Cont...')
#1 /home/matthew/Projects/myproject/vendor/laravel/framework/src/Illuminate/Container/Container.php(608): Illuminate\Container\Container->build('Illuminate\\Cont...')
#2 /home/matthew/Projects/myproject/vendor/laravel/framework/src/Illuminate/Container/Container.php(575): Illuminate\Container\Container->resolve('Illuminate\\Cont...')
#3 /home/matthew/Projects/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(728): Illuminate\Container\Container->make('Illuminate\\Cont...')
#4 /home/matthew/Projects/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExce in /home/matthew/Projects/myproject/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 895
Run Code Online (Sandbox Code Playgroud)

Google对此并没有多大用处,而且错误信息也不是很明显.它似乎与命名空间有关,因为该类PHPUnit\Framework\Constraint\Constraint似乎不存在,但我不确定如何解决该问题.我已根据需要将PHPUnit的版本升级到5.7,但这并不能解决问题.任何人都可以建议问题可能是什么?

编辑:只是想尝试将版本降级到1.0,这似乎解决了现在的问题,所以也许2.0版本可以与PHPUnit 6一起使用?不过,希望这篇文章将来会帮助某人.

mmc*_*aff 5

我今天也遇到了这个。

我没有将laravel / browser-kit-testing从〜2.0降级到〜1.0,而是将“ phpunit / phpunit”从5.7升级到了〜6.0,并解决了该问题。

我同意它与PHPUnit命名空间有关。从5月25日开始致力于laravel / browser-kit-testing,标题为“使用PHPUnit 6.0命名空间类”。


Mat*_*aly 3

将 laravel/browser-kit-testing 降级到 1.0 似乎解决了这个问题,所以我猜测这与 PHPUnit 的命名空间有关。