Ложные объекты при написании http-тестов в laravel - PullRequest
0 голосов
/ 21 декабря 2018

Итак, у меня есть имя класса Verify, которое вызывает поставщика SMS для проверки OTP.Сейчас я пишу http тесты в Laravel.

Как мне написать тесты HTTP, чтобы при выполнении этого маршрута макет Verify назывался не реальной реализацией.

1 Ответ

0 голосов
/ 22 декабря 2018

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

Вот грубый пример, ничего не зная о классе или его методах:

$mock = Mockery::mock(Verify::class);
$mock->shouldReceive('verify')
    ->once()
    ->andReturn(true);

App::instance(Verify::class, $mock);

Затем убедитесь, что при создании и использовании класса Verify вы извлекаете экземпляр изконтейнера службы.

$verify = App::make(Verify::class);
// instead of $verify = new Verify();

В этот момент у вас должен быть фиктивный экземпляр во время ваших тестов, а не реальный класс.Больше информации о связывании и сервисном контейнере в целом можно найти в документации , и в Laracasts

...