У меня есть два класса.
class Posts {
public function retrieve(): array {
// Do something
}
}
И
class PostsGateway {
public $entity;
function __construct() {
$this->entity = new Posts();
}
public function retrieve(): array {
return $this->entity->retrieve();
}
}
Я хочу проверить поведение метода PostsGateway класса retrieve
. Свойство entity
является объектом, поэтому я присваиваю этому свойству другой макет, предназначенный для Posts
класса.
Я устанавливаю ожидание для макета Posts
, который я назначил свойству entity
в PostsGateway
mock.
use PHPUnit\Framework\TestCase;
class PostsGatewayTest extends TestCase {
/**
* Test `retrieve` behavior.
*/
public function testRetrieve() {
$postsMock = $this->createMock( Posts::class );
$postsGatewayMock = $this->createMock( PostsGateway::class );
$postsGatewayMock->entity = $postsMock;
$postsGatewayMock->entity->expects( $this->once() )->method( 'retrieve' );
$data = $postsGatewayMock->retrieve();
}
}
Когда я запускаю тест, он терпит неудачу со следующей ошибкой.
PostsGatewayTest::testRetrieve
Expectation failed for method name is equal to 'retrieve' when invoked 1 time(s).
Method was expected to be called 1 times, actually called 0 times.