У Laravel Mock с Mockery есть ошибка "ожидания не указаны" - PullRequest
0 голосов
/ 12 марта 2019

У меня есть этот класс сервиса и я использую класс репозитория в моем сервисе:

class VisitorStatisticAction
{
    protected $repository;

    public function __construct(VisitorStatisticRepository $repository)
    {
        $this->repository = $repository;
    }

    public function setLog($organizationSlug)
    {
        if (!$this->repository->setLog($organizationSlug)) {
            return false;
        }

        return true;
    }
}

Я хочу написать модульный тест для этого класса:

public function testSetVisitorLog()
{
    $visitorRepositoryMock = Mockery::mock(VisitorStatisticRepository::class);

    $this->app->instance(VisitorStatisticRepository::class,$visitorRepositoryMock);
    $visitorAction = new VisitorStatisticAction($visitorRepositoryMock);
    $visit = $visitorAction->setLog('gilan');
    $this->assertInstanceOf(VisitorStatistic::class, $visit);
}

но у меня есть эта ошибка:

1) Тесты \ Unit \ VisitorStatisticTest :: testSetVisitorLog Mockery \ Exception \ BadMethodCallException: получено Mockery_0_App_Repositories_VisitorStatisticRepository :: setLog (), но ожидания не были указаны

1 Ответ

0 голосов
/ 12 марта 2019

Мне нужно использовать «shouldReceive» и вызывать метод для использования в:

$visitorRepositoryMock->shouldReceive('setLog')->once()->andReturnSelf();
...