【发布时间】:2021-01-27 20:09:42
【问题描述】:
我正在尝试对在数据提供程序中创建并传递给我的测试方法的模拟对象设置测试期望。这很有用,因为我可以在不同的测试用例中重用我的数据提供者,并让测试定义对模拟的期望。但是,phpunit 在案例通过时将此测试标记为有风险,但在未通过时正确地使测试失败。这是已知的不能做的事情吗?
我正在使用 phpunit v9.3
这是一个人为的例子来说明问题:
<?php
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class Test extends TestCase
{
public function provideMock(): array
{
return [
[$this->createMock(\DateTime::class)],
];
}
/** @dataProvider provideMock */
public function testMockPasses(MockObject $mock): void
{
$mock->expects($this->once())->method('format')->with('Y-m-d');
$mock->format('Y-m-d');
}
/** @dataProvider provideMock */
public function testMockFails(MockObject $mock): void
{
$mock->expects($this->once())->method('format')->with('Y-m-d');
$mock->format('Y-m-');
}
}
我希望这能正常工作,因为我只是将对象传递给方法 - 所有内部 php 的东西。
【问题讨论】: