PHPunit Mocking 不返回指定值

时间:2021-04-11 00:27:20

标签: php laravel unit-testing phpunit laravel-testing

我有一个如下所示的控制器类

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”。任何人都知道为什么没有返回指定的返回值?

1 个答案:

答案 0 :(得分:0)

想通了。我使用了 createPartialMock 而不是 mockBuilder,它返回了所需的内容。

$mockGetName = $this->createPartialMock(UserController::class, ['getName']);
$mockGetName->method('getName')->willReturn("test name");
相关问题