PHPUnit 9.5.2中的方法模拟



我是PHP中嘲笑的新手,似乎我误解了一些东西,因为我无法让基础知识发挥作用:


class Klass
{
public function a(): string
{
return 'a';
}
}
class MockTest extends PHPUnitFrameworkTestCase
{
function testA(): void
{
$klass = new Klass();
$this->assertEquals('a', $klass->a());
}
function testMockA()
{
$mock = $this->getMockBuilder(Klass::class)->getMock();
$mock->method('a')->willReturn('foo');
$klass = new Klass();
$this->assertSame('foo', $klass->a());
}
}

测试testMockA失败,因为$klass->a((仍然返回"a"。模拟似乎什么都没做?

我基于PHPUnit Mocking函数,该函数使用了数据库连接,在这里我使用了TaskTest.php上的内容:这就是我最终想要的,模拟我的数据库类,使其不进行实际查询,但我无法使其工作。

您需要调用$mock->a()而不是$klass->a()。实际上,您甚至不应该创建$klass

最新更新