使用 Mockery 测试模型中的简单函数
Testing a simple function in a model with Mockery
我完全不熟悉 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));
}
非常感谢!
Mockery 用于创建 'mocks',它们是只执行您告诉它们执行的操作的哑对象(例如,如果提供参数 z,方法 x 将 return y)。通常它用于模拟要测试的 class 的依赖项。在您的情况下,您可能不需要它。
所以你的测试可能看起来像这样
$formation = new App\Models\Formation();
$actualvalue = $formation->incrementRefFormation($testValue);
$this->assertEquals($expectedValue, $actualvalue);
我完全不熟悉 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));
}
非常感谢!
Mockery 用于创建 'mocks',它们是只执行您告诉它们执行的操作的哑对象(例如,如果提供参数 z,方法 x 将 return y)。通常它用于模拟要测试的 class 的依赖项。在您的情况下,您可能不需要它。
所以你的测试可能看起来像这样
$formation = new App\Models\Formation();
$actualvalue = $formation->incrementRefFormation($testValue);
$this->assertEquals($expectedValue, $actualvalue);