使用Mockery在模型中测试一个简单的函数

问题描述 投票:0回答:1

我完全擅长使用嵌入在Laravel中的Mockery。我很难测试一个简单的模型函数,它增加了引用的一部分,无论我传递给测试结果的值是否正确,即使它应该失败。我想我在某处犯了错误或者我不懂文档。谢谢你的帮助。

这是一个简单的测试功能

public function incrementRefFormation(string $value):string
{
    $split = str_split($value);
    $group1 = '';

    for ($i=0;$i<11;$i++) {
        $group1 .= $split[$i];
    }

    $group2 = $split[11].$split[12];
    $group2 = (int)$group2;
    $group2++;

    return $group1.$group2.$split[13];
}

这是应该失败的测试

public function testIncrementRefFormation()
{
    //$testValue = '1 332 8100 20S';
    $testValue = '123456';
    $expectedValue = '1332810021S';


    $mock = Mockery::mock('App\Models\Formation');

    $mock->shouldReceive(['incrementRefFormation' => $expectedValue])
            ->once();

    var_dump($mock->incrementRefFormation($testValue));
}

非常感谢!

php laravel mockery
1个回答
0
投票

Mockery用于创建'模拟',这些模糊对象仅执行您告诉他们要做的事情(例如,如果提供参数z,方法x将返回y)。通常它用于模拟要测试的类的依赖项。在你的情况下,你可能不需要它。

所以你的测试可能看起来像这样

$formation = new App\Models\Formation();
$actualvalue = $formation->incrementRefFormation($testValue);
$this->assertEquals($expectedValue, $actualvalue);
© www.soinside.com 2019 - 2024. All rights reserved.