Điều này dường như chỉ xảy ra trên hệ thống của tôi. Không ai khác có thể tái tạo nó. Nếu thông báo lỗi quá lớn (khoảng 65k byte trong trường hợp của tôi) không có gì được in trên màn hình. Tôi đang sử dụng PHP 7.1.3 trên Windows 7, với php.ini mặc định (giới hạn bộ nhớ là 8gb) và cấu hình PHPUnit 6.0.13 mặc định. Lỗi không xuất hiện trong cả dấu nhắc và quyền hạn.Điều gì có thể khiến PHPUnit không in các thông báo lỗi rất lớn?
<?php
use PHPUnit\Framework\Constraint\Constraint;
use PHPUnit\Framework\TestCase;
class MyConstraint extends Constraint
{
protected $expected;
function __construct($expected){
parent::__construct();
$this->expected = $expected;
}
protected function matches($actual){
return false;
}
function failureDescription($other): string{
return "desc";
}
function toString(){
return "description";
}
function additionalFailureDescription($other): string{
return str_repeat("x", 100000);
// If set to a smaller dump, error will appear
// some people I asked to try could dump one million
// bytes without problems, while I can't print more
// than about 50k
}
}
class SomeTest extends TestCase
{
function testBigDump(){
TestCase::assertThat("irrelevant", new MyConstraint("irrelevant"));
}
}
?>
Và đây là những gì tôi nhận được trên màn hình:
PHPUnit 6.0.13 bởi Sebastian Bergmann và đóng góp.
Runtime: PHPDBG 7.1.3 Cấu hình: ..............
F 1/1 (100%)
Thời gian: 361 ms, Memory: 6.00 MB
Có 1 thất bại:
1) SomeTest :: testBigDump
<------- Notice no error description here
KHÔNG! Kiểm tra: 1, Xác nhận: 1, Thất bại: 1.
Bạn có biết điều gì có thể gây ra điều này không? Cảm ơn bạn trước.
Bộ nhớ PHP có vẻ ổn. Bạn sẽ nhận được lỗi khác nhau. Bạn có cố gắng chuyển hướng đầu ra của thử nghiệm vào một tệp không? Có lẽ dòng lệnh của bạn không đủ bộ nhớ để hiển thị chuỗi dài như vậy. Sẽ hữu ích nếu bạn có thể đăng ví dụ làm việc đầy đủ thay vì mã giả, vì vậy những người khác có thể cố gắng sao chép nó. –
không phải là mã giả. điều đó chỉ đủ để gây ra lỗi – Wes