php7関数が整数だけを受け入れることを検証しようとしています。phpunit catch php7 TypeErrorを作成する
これはクラスです:
<?php
declare(strict_types=1);
class Post
{
private $id;
public function setId(int $id)
{
$this->id = $id;
}
}
そして、これはテストです:
<?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);
}
}
}
私が手にエラーがある:
TypeError: Argument 1 passed to Post::setId() must be of the type integer, string given, called in /path/test/PostTest.php on line 35
は、検証することが可能ですエラー?また、それはそのような小切手を実行する意味がありますか?
あなたは、テストの型の不一致の余分に側面についての詳細を与えることができますか? 'myMethod()'の最初の引数に型ヒントを追加することを忘れていないことをチェックするのはなぜ役に立たないのですか? – marcv
これは当てはまりません。 PHPUnitはデフォルトで、PHPのエラー、警告、およびテストの実行中に発生した通知を例外に変換します。PHPを期待するには '@expectedException PHPUnit \ Framework \ Error'が必要です'Error'(PHP 7の' assert() 'によって生成された' Error'を含む)です。これは逆に直感的ではありません。 – chili
この問題を解決する方法を説明することができますか? https://stackoverflow.com/questions/48486568/catch-an-error-as-exception – zioMitch