我有一个如下所示的控制器类
Class UserController {
public function getName(){
return "test_name"
}
public function hello(){
return getName()."!"
}
}
如下所示的随附单元测试
use PHPUnit\Framework\TestCase;
use App\Http\Controllers\API\User\UserController;
class UserTest extends TestCase{
public function testExample(){
$mockGetName = $this->getMockBuilder(UserController::class)->onlyMethods(['getName'])->getMock();
$mockGetName->method('getName')->willReturn("dummy");
$userController = new $mockGetName();
dump($userController->getName("test name"));
}
}
当模拟 getName() 返回 null
而不是“dummy”。任何人都知道为什么没有返回指定的返回值?
答案 0 :(得分:0)
想通了。我使用了 createPartialMock
而不是 mockBuilder
,它返回了所需的内容。
$mockGetName = $this->createPartialMock(UserController::class, ['getName']);
$mockGetName->method('getName')->willReturn("test name");