Модульное тестирование с насмешкой возвращает false - PullRequest
0 голосов
/ 12 марта 2019

Я написал этот тест:

public function testSetVisitorLog()
{
    $visitorRepositoryMock = Mockery::mock('App\Repositories\VisitorStatisticRepository');
    $this->app->instance('App\Repositories\VisitorStatisticRepository',$visitorRepositoryMock);
    $visitorRepositoryMock->shouldReceive('setLog')->once();

    $visitorAction = new VisitorStatisticAction($visitorRepositoryMock);
    $this->assertEquals(true,$visitorAction->setLog('fars'));
}

Я вызываю setLog в классе VisitorStatisticAction со строковым вводом

в VisitorStatisticAction У меня есть это:

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

Iне знаю, почему dd($this->repository->setLog($organizationSlug)); возвращается null

setLog в репозитории это:

public function setLog($organizationSlug)
{
    $visitor = new VisitorStatistic();
    $visitor->organization_slug = $organizationSlug;
    $visitor->ip = request()->ip();
    $visitor->url = url()->current();
    $visitor->save();
    return $visitor;
}

1 Ответ

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

Я нашел ответ:)

Добавьте andReturn() и он вернет правильный ответ

$visitorRepositoryMock->shouldReceive('setLog')->once()->andReturn(new VisitorStatistic());
...