Php Mockry无法在测试方法中调用我的方法

Php Mockry无法在测试方法中调用我的方法,php,testing,static,phpunit,mockery,Php,Testing,Static,Phpunit,Mockery,我正在尝试为下面类中的方法编写测试。然而,当我运行测试时,我得到了一个错误,get_b64从未运行过?我不明白这是怎么回事 我对测试静态方法的mockry文档进行了一些研究,但就我所知,这个错误不是由这个原因造成的吗 我需要用我的测试策略改变什么,或者能够在模拟对象中模拟函数调用 类别: namespace App\Services\Steam; use App\Services\Steam\Utils; class Steam { public function profile(s

我正在尝试为下面类中的方法编写测试。然而,当我运行测试时,我得到了一个错误,
get_b64
从未运行过?我不明白这是怎么回事

我对测试静态方法的mockry文档进行了一些研究,但就我所知,这个错误不是由这个原因造成的吗

我需要用我的测试策略改变什么,或者能够在模拟对象中模拟函数调用

类别:

namespace App\Services\Steam;

use App\Services\Steam\Utils;

class Steam
{
    public function profile(string $steamID)
    {
        $b64 = Utils::get_b64($steamID);

        if ($b64 === null) {
            throw new \App\Exceptions\InvalidSteamId();
        }

        return new Profile($b64);
    }   
}
测试用例:

public function test_create_user_object()
{   
    $id = "123"
    $utilsMock  = Mockery::mock(\App\Services\Steam\Utils::class);

    $utilsMock->shouldReceive('get_b64')
                ->once()
                ->with($id)
                ->andReturn($id);

    $steam = new \App\Services\Steam\Steam();
    $steam->profile($id);
}

静态调用
get_b64
,这意味着它是从类而不是对象调用的

要模拟此类呼叫,您需要使用:


请记住,它完全替换了
Utils
类,因此如果有更多的静态函数从该类调用,则还需要模拟它们。

静态调用
get\u b64
,这意味着它是从类调用的,而不是从对象调用的

要模拟此类呼叫,您需要使用:

请记住,它完全替换了
Utils
类,因此,如果有更多的静态函数从该类调用,则还需要模拟它们

public function test_create_user_object()
{   
    $id = "123"
    $utilsMock  = Mockery::mock('alias:\App\Services\Steam\Utils');

    $utilsMock->shouldReceive('get_b64')
                ->once()
                ->with($id)
                ->andReturn($id);

    $steam = new \App\Services\Steam\Steam();
    $steam->profile($id);
}