gpt4 book ai didi

unit-testing - PHPUnit 9 - 模拟无效方法

转载 作者:行者123 更新时间:2023-12-04 14:09:12 25 4
gpt4 key购买 nike

我刚刚升级了 phpunit 7.5.20phpunit 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
]);
}
}
这是虚拟类:
<?php


namespace Lib;

interface IDummyCode
{
public function setDummyStuff(
int $testInt,
string $testString
): void;
}
小伙伴们,你们对如何改进这个有一些想法吗?
非常感谢!

最佳答案

createConfiguredMock的第二个参数接受一个关联数组,其中键是要模拟的方法,值是方法应该返回的值。自 setDummyStuff方法不能返回任何东西(void 返回类型)定义返回值是没有意义的。这不是 null特别有值(value)。它会以任何值失败。
所以你可以不考虑这个方法:

$mock = $this->createConfiguredMock(IDummyCode::class, []);
也可以用更好的方式编写:
$mock = $this->createStub(IDummyCode::class);
如果您需要验证 setDummyStuff被调用,你必须设置一个期望。
$mock = $this->createMock(IDummyCode::class);
$mock->expects(self::once())
->method('setDummyStuff')
->with(123, 'Hello');

关于unit-testing - PHPUnit 9 - 模拟无效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65853587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com