Насмешка над фасадом Laravel, который вызывает метод с самого фасада - PullRequest
0 голосов
/ 26 декабря 2018

Я сейчас нахожусь в процессе написания юнит-тестов для Черты.Эта черта включала метод registryPersist (), который в свою очередь вызывает метод Facade Registry :: persist ().Этот метод, как следует из названия, сохраняет значение реестра в базе данных, а затем вызывает Registry :: set () для установки реестра в локальную область.Это довольно простая процедура.

Я попытался следовать предложению из документов Laravel и высмеивать метод Registry :: persist () с помощью следующего кода:

Registry::shouldReceive('persist')->with('test', 'ok', 'model.users')

Однако, учитывая, что persist также вызывает set я получаю исключение BadMethodCallException , потому что set не является поддельным.( Получил RegistryAccessControl :: set (), но ожидания не были указаны )

В официальных документах, посвященных издевательствам, предлагается создать фиктивный экземпляр, но когда я действительно пытаюсь вызвать,Метод черт, фасад не является насмешливым.

$user = factory(User::class)->create();
$user->registrySet('test', 'ok');

Метод черт:

public function registryPersist(string $name, $value): void
{
    Registry::persist(
        $name,
        $value,
        $this->getNamespace()
    );
}

Есть ли способ эффективно протестировать этот метод?

Кроме того,учитывая, что registrySet () только перенаправляет параметры на фасад, вы думаете, что тест, который я пытаюсь написать, является хорошей идеей?

Заранее спасибо.

...