无法模拟 laravel 6 中的任何自定义 class 方法
Unable to mock any custom class method in laravel 6
我有一个基本 Class 助手。
namespace App\Helpers;
class CommonUtility {
public static function foo() {
return 'foo';
}
}
并且在User.php
中使用
<?php
class User extends Authenticatable
public function test() {
return CommonUtility::foo();
}
}
现在我想编写一个模拟 CommonUtility 的测试 class。谁能知道我是 laravel 单元测试的新手。
尝试了一些解决方案,例如
$mock = Mockery::mock(CommonUtility::class, function ($mock) {
$mock->shouldReceive('foo')->andReturn('foobar');
})->makePartial();
dd($mock->foo());
它给了我模拟结果,但我从
开始尝试
$user = new \App\User();
dd($user->test());
它正在调用实际函数而不是模拟函数。
您可以使用 Aliasing Mockery features for Mocking Public Static Methods
例如:
$mock = \Mockery::mock('alias:App\Helpers\CommonUtility');
$mock->shouldReceive('foo')
->andReturn('foobar');
$user = new User();
$this->assertEquals("foobar", $user->test());
测试如期通过
我有一个基本 Class 助手。
namespace App\Helpers;
class CommonUtility {
public static function foo() {
return 'foo';
}
}
并且在User.php
中使用<?php
class User extends Authenticatable
public function test() {
return CommonUtility::foo();
}
}
现在我想编写一个模拟 CommonUtility 的测试 class。谁能知道我是 laravel 单元测试的新手。
尝试了一些解决方案,例如
$mock = Mockery::mock(CommonUtility::class, function ($mock) {
$mock->shouldReceive('foo')->andReturn('foobar');
})->makePartial();
dd($mock->foo());
它给了我模拟结果,但我从
开始尝试$user = new \App\User();
dd($user->test());
它正在调用实际函数而不是模拟函数。
您可以使用 Aliasing Mockery features for Mocking Public Static Methods
例如:
$mock = \Mockery::mock('alias:App\Helpers\CommonUtility');
$mock->shouldReceive('foo')
->andReturn('foobar');
$user = new User();
$this->assertEquals("foobar", $user->test());
测试如期通过