Как издеваться над отношением laravel HasOne от красноречивого?

У меня проблема с имитацией красноречивого отношения HasOne для целей модульного тестирования.

Это сложная часть:

$save->relationTable()->create([
    'field_1' => 'value_1',
    'field_2' => 'value_2',
    'field_3' => 'value_3',
]);

Отношение в модели:

public function relationTable(): HasOne
{
    return $this->hasOne(RelationTable::class);
}

В частности, ошибка:

Получено сообщение Mockery_4_Illuminate_Database_Eloquent_Relations_HasOne::create(), но ожидания не указаны

Если кто знает...


person Rodman Tode    schedule 30.10.2019    source источник
comment
в вашем модульном тесте вам нужно установить, что ожидается, чтобы он мог показать вам, сработало это или нет.   -  person N69S    schedule 30.10.2019
comment
Конечно, вы знаете, как установить ожидание для $save->relationTable()->create()? Я знаю, как найти, создать, обновить и т. д. Но я борюсь с отношениями.   -  person Rodman Tode    schedule 30.10.2019
comment
Есть ли причина, по которой вы издеваетесь над Eloquent, а не просто обращаетесь к базе данных (и при необходимости используете трейт RefreshDatabase)?   -  person Rwd    schedule 30.10.2019


Ответы (1)


shouldReceive('RelationTable')->once();

Вы должны закончить насмешку с ожидаемым результатом, иначе вы не сможете сказать, сработал ли ваш тест или нет.

person pr1nc3    schedule 30.10.2019