Laravel Mock with Mockery 有错误 "no expectations were specified"
Laravel Mock with Mockery has error "no expectations were specified"
我有此服务 class 并在我的服务中使用存储库 class :
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;
}
}
我想为此编写单元测试 class :
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) Tests\Unit\VisitorStatisticTest::testSetVisitorLog
Mockery\Exception\BadMethodCallException:已收到 Mockery_0_App_Repositories_VisitorStatisticRepository::setLog(),但未指定预期
我需要使用“shouldReceive”并调用想要使用的方法:
$visitorRepositoryMock->shouldReceive('setLog')->once()->andReturnSelf();
我有此服务 class 并在我的服务中使用存储库 class :
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;
}
}
我想为此编写单元测试 class :
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) Tests\Unit\VisitorStatisticTest::testSetVisitorLog Mockery\Exception\BadMethodCallException:已收到 Mockery_0_App_Repositories_VisitorStatisticRepository::setLog(),但未指定预期
我需要使用“shouldReceive”并调用想要使用的方法:
$visitorRepositoryMock->shouldReceive('setLog')->once()->andReturnSelf();