Próbuję sprawdzić, czy funkcja php7 akceptuje tylko liczby całkowite.Spraw, aby phpunit złapał php7 TypeError
Jest to klasa:
<?php
declare(strict_types=1);
class Post
{
private $id;
public function setId(int $id)
{
$this->id = $id;
}
}
I to jest test:
<?php
declare(strict_types=1);
class PostTest extends \PHPUnit_Framework_TestCase
{
private function getPostEntity()
{
return new Post();
}
public function testSetId()
{
$valuesExpected = [123, '123a'];
foreach ($valuesExpected as $input) {
$this->getPostEntity()->setId($input);
}
}
}
Błąd pojawia się:
TypeError: Argument 1 passed to Post::setId() must be of the type integer, string given, called in /path/test/PostTest.php on line 35
Czy to możliwe, aby potwierdzić takie błąd? też, czy ma sens prowadzenie takiej kontroli?
mógłbyś podać szczegóły dotyczące superflous aspekcie typu badania niedopasowania? Dlaczego bezużyteczne jest sprawdzenie, czy nie zapomniałem dodać wskazówki typu do pierwszego argumentu 'myMethod()', na przykład? – marcv
Nie wydaje się, żeby tak było. Z Twojej własnej dokumentacji: 'Domyślnie PHPUnit konwertuje błędy PHP, ostrzeżenia i powiadomienia, które są wyzwalane podczas wykonywania testu do wyjątku." Wydaje się, że potrzebujesz '@expectedException PHPUnit \ Framework \ Error' aby oczekiwać dowolnego PHP 'Error's (w tym' Error's emitowane przez PHP 7 'assert()'), co jest mniej intuicyjne co najmniej. – chili
Czy mógłbyś wyjaśnić (może za pomocą odsyłacza do dokumentacji), jak rozwiązać ten problem? https://stackoverflow.com/questions/48486568/catch-an-error-as-exception – zioMitch