Я пишу модульные тесты для моего приложения laravel 5. В одном тесте я вызываю функцию и должен проверить, что в тестируемой функции вызывается статический метод create
для другой модели.Как я могу издеваться над методом create на модели в laravel 5?
Я не хочу, чтобы на самом деле сохранялись любые ресурсы базы данных.
Я создал объект-макет, определенные ожидания и привязал его к экземпляру приложения, но когда create
называется приложением, он пытается запустить SQL, а не перехватывать вызов функции макетным объектом.
public function testLogCreation() {
$this->log = Mockery::mock('App\Models\Log');
$this->log->shouldReceive('create')->once();
$this->app->instance('App\Models\Log',$this->log);
echo get_class($this->app['App\Models\Log']); // output: Mockery_2_App_Models_Log
}
There was 1 error
SQLSTATE[23503]: Foreign key violation: 7 ERROR: insert or update on table "logs" violates foreign key constraint....
Я также попытался $this->log->shouldReceive('save')->once();
, так как я заметил, что статическая create
функции вызывает функцию save
общественности, но я думаю, что я не создаю макет ожидания на праве экземпляра log
.
Если этого не может быть сделано, любые предложения по альтернативным стратегиям?
Спасибо!