【发布时间】:2019-08-02 23:21:57
【问题描述】:
我已经写了这个测试:
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'));
}
我在 VisitorStatisticAction 类中调用 setLog 并输入字符串
在 VisitorStatisticAction 我有这个:
public function setLog($organizationSlug)
{
dd($this->repository->setLog($organizationSlug));
if (!$this->repository->setLog($organizationSlug)) {
return false;
}
return true;
}
我不知道为什么dd($this->repository->setLog($organizationSlug)); 是返回null
setLog in repository 是这样的:
public function setLog($organizationSlug)
{
$visitor = new VisitorStatistic();
$visitor->organization_slug = $organizationSlug;
$visitor->ip = request()->ip();
$visitor->url = url()->current();
$visitor->save();
return $visitor;
}
【问题讨论】:
-
你使用的是什么版本的 Laravel?
-
laravel 5.7 版
标签: laravel unit-testing testing mockery