Laravel Mock with Mockery 有错误 "no expectations were specified"

标签 laravel unit-testing mockery

我有这个 Service 类并在我的 Service 中使用存储库类:

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) Tests\Unit\VisitorStatisticTest::testSetVisitorLog
Mockery\Exception\BadMethodCallException:收到 Mockery_0_App_Repositories_VisitorStatisticRepository::setLog(),但没有指定期望

最佳答案

我需要使用“shouldReceive”并调用要使用的方法:

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

关于Laravel Mock with Mockery 有错误 "no expectations were specified",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55117017/

相关文章:

unit-testing - 类型或命名空间名称 'VisualStudio' 在命名空间 'Microsoft' 中不存在

php - 用 mock 测试 Laravel 外观总是会通过,即使它应该失败

c# - Moq 不会调用 IAuthenticationManager SignIn 方法

c# - 加速 ASP MVC 单元测试

php - Mockery 中的重载和别名有什么区别?

php - 如何模拟 laravel 辅助函数请求

php - Laravel 背景颜色

javascript - 如何在 Laravel Blade 中使用 Angular 变量

javascript - jquery replaceWith() 不更新数据

php - Laravel 中使用 phpunit 拒绝访问数据库