Что я делаю не так с Mockery

#php #unit-testing #phpunit #mockery

#php #модульное тестирование #phpunit #издевательство

Вопрос:

это мой тестовый код:

 public function testTransceiverEntityCreate()
{
    $transceiver_driver = Mockery::mock('RecoderDriversTransceiverDriverInterface');
    $transceiver_driver->shouldReceive('load');

    $transceiver_utils = Mockery::mock('TransceiverUtils');

    new Transceiver('1F2D03', $transceiver_utils, $transceiver_driver);
}
  

Когда я запускаю тесты, он возвращает следующую ошибку:

1) TransceiverTest::testTransceiverEntityCreate
Argument 2 passed to RecoderEntitiesTransceiver::__construct() must be an instance of RecoderTransceiverUtils, instance of Mockery_2__TransceiverUtils given, called in /var/www/solidoptics-recorder/private/application/libraries/Recoder/tests/Entities/TransceiverTest.php on line 35 and defined

Почему Mockery_2__TransceiverUtils? Я был бы рад любым идеям. Спасибо.

Ответ №1:

Это происходит, когда класс не найден, поэтому Mockery полностью издевается над ним, а не расширяет его. Класс должен быть уже загружен или загружаться через автозагрузку.