Laravel — Утверждает, что Багснаг предупрежден

#laravel #phpunit #bugsnag

Вопрос:

Я использую bugsnag во всем своем приложении. При написании модульных тестов как я могу проверить, что Bugsnag предупрежден?

Поскольку это фасад, я предполагаю, что должен уметь так издеваться

Bugsnag::shouldReceive("notifyError");

Я получаю эту ошибку, хотя

Received Mockery_3_Bugsnag_Client::leaveBreadcrumb(), but no expectations were specified

Я никуда не звоню leaveBreadCrumb() в своем приложении.

Вот некоторые дополнительные результаты.

     105▕             $events->listen(QueryExecuted::class, function (QueryExecuted $query) use ($show) {
    106▕                 $this->app->bugsnag->leaveBreadcrumb(
    107▕                     'Query executed',
    108▕                     Breadcrumb::PROCESS_TYPE,
  ➜ 109▕                     $this->formatQuery($query->sql, $show ? $query->bindings : [], $query->time, $query->connectionName)
    110▕                 );
    111▕             });
    113▕             $events->listen('illuminate.query', function ($sql, array $bindings, $time, $connection) use ($show) {
 

Спасибо!

Комментарии:

1. Вы не должны утверждать, что вызывается Bugsnag… это скорее деталь реализации, чем логика для тестирования. Но, в любом случае, ваша проблема в том, что bugsnag делает что-то за кулисами, называет себя, и вы не издеваетесь leaveBreadcrumb (как вы можете видеть в Интернете 106 , именно так работает bugsnag). Таким образом , вы можете либо partialMock удалить тест, либо удалить его, так как это не очень хорошая вещь для тестирования.