2017-06-25 17 views
5

Tôi đang nâng cấp một dự án cá nhân Laravel cũ từ 5.2 lên 5.4. Nâng cấp lên 5.3 dường như đã OK, nhưng bây giờ tôi đang chuyển sang 5.4 Tôi đã gặp sự cố.Không thể tìm thấy PHPUnit Framework Constraint Constraint trong gói trình duyệt LaravelKit sau khi nâng cấp lên 5.4

Dự án đã sử dụng lớp thử nghiệm cũ nên tôi đã cài đặt gói thử nghiệm BrowserKit để duy trì khả năng tương thích ngược. Tôi cũng tạo ra các trường hợp thử nghiệm cơ bản sau đây cho các bài kiểm tra Browserkit:

<?php 

namespace Tests; 

use Laravel\BrowserKitTesting\TestCase as BaseTestCase; 

abstract class BrowserKitTestCase extends BaseTestCase 
{ 
    use CreatesApplication; 

    public $baseUrl = 'http://localhost'; 
} 

Các thử nghiệm cho các mô hình, trong đó sử dụng các trường hợp thử nghiệm bình thường, làm việc tốt, nhưng khi tôi chạy bất kỳ của các xét nghiệm có sử dụng các trường hợp thử nghiệm BrowserKit , Tôi thấy thông báo lỗi sau:

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 

Google chưa được sử dụng nhiều và thông báo lỗi này không được chiếu sáng khủng khiếp. Nó có vẻ là một cái gì đó để làm với không gian tên vì lớp PHPUnit\Framework\Constraint\Constraint dường như không tồn tại, nhưng tôi không chắc chắn làm thế nào để giải quyết vấn đề. Tôi đã nâng cấp phiên bản PHPUnit lên 5.7 nếu cần, nhưng điều đó không giải quyết được vấn đề. Bất cứ ai có thể đề xuất vấn đề có thể là gì?

CHỈNH SỬA: Chỉ cần thử hạ cấp phiên bản xuống 1.0 và điều đó dường như giải quyết được vấn đề hiện tại, vì vậy có lẽ phiên bản 2.0 được thiết kế để làm việc với PHPUnit 6? Tuy nhiên, hy vọng bài đăng này sẽ giúp một người nào đó trong tương lai.

Trả lời

2

Hạ cấp xuống/thử nghiệm trình duyệt-kit-thử nghiệm xuống 1.0 dường như giải quyết vấn đề, vì vậy tôi đoán đó là một việc cần làm với các không gian tên cho PHPUnit.

+0

Tôi thích câu trả lời này làm hướng dẫn nâng cấp cho Laravel 5.4, đề cập cụ thể đến việc sử dụng phiên bản 1. * – vonec

4

Tôi cũng đã tham gia vào ngày hôm nay.

Thay vì hạ cấp thử nghiệm của trình duyệt/thử nghiệm từ ~ 2.0 xuống ~ 1.0, tôi đã nâng cấp "phpunit/phpunit" từ 5,7 lên ~ 6,0 và khắc phục được sự cố.

Tôi đồng ý rằng nó có liên quan đến các vùng tên PHPUnit. Có một cam kết để Laravel/trình duyệt-kit-thử nghiệm từ ngày 25 tháng 5 với một tiêu đề của "Sử dụng PHPUnit 6.0 không gian tên lớp."

Các vấn đề liên quan