Eve*_*cks 7 methods phpunit unit-testing mocking
我刚刚升级到phpunit 7.5.20,phpunit 9.5.0遇到了很多错误(实际上是好的错误),但不能 100% 确定如何解决其中一些错误。只是寻找一些想法来修复以下错误:
Method setDummyStuff may not return value of type NULL, its return declaration is "void"
仅当您创建方法createConfiguredMock()并将null方法作为参数传递时,才会发生这种情况。
这是我的测试:
<?php
use Lib\IDummyCode;
class DummyTest extends PHPUnit\Framework\TestCase
{
public function setUp(): void
{
parent::setUp();
}
public function testDummyThatReturnsVoid()
{
$this->createConfiguredMock(IDummyCode::class, [
'setDummyStuff' => null
]);
}
}
Run Code Online (Sandbox Code Playgroud)
这是虚拟类:
<?php
namespace Lib;
interface IDummyCode
{
public function setDummyStuff(
int $testInt,
string $testString
): void;
}
Run Code Online (Sandbox Code Playgroud)
你们有关于如何改进这一点的想法吗?多谢!
Phi*_*nke 10
第二个参数createConfiguredMock采用关联数组,其中键是要模拟的方法,值是该方法应返回的值。由于该setDummyStuff方法不能返回任何内容(void 返回类型),因此定义返回值是没有意义的。这并不是null特别的价值。任何值都会失败。
所以你可以忽略这个方法:
$mock = $this->createConfiguredMock(IDummyCode::class, []);
Run Code Online (Sandbox Code Playgroud)
也可以写成更好的方式:
$mock = $this->createStub(IDummyCode::class);
Run Code Online (Sandbox Code Playgroud)
如果您需要验证是否setDummyStuff已调用,则必须设置一个期望。
$mock = $this->createMock(IDummyCode::class);
$mock->expects(self::once())
->method('setDummyStuff')
->with(123, 'Hello');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10955 次 |
| 最近记录: |