我正在尝试使用 phpunit mockbuilder 来模拟我的一个类,但我只想要“index”方法。但是当我尝试使用下面的代码时,var_dump 表明我在模拟中拥有我的类中的所有方法?这正常吗?我做错了什么?
提前致谢。
public function setUp(): void
{
parent::setUp();
$mockController = $this->getMockBuilder(MyClass::class)
->disableOriginalConstructor()
->disableOriginalClone()
->disableArgumentCloning()
->disallowMockingUnknownTypes()
->setMethods(['index'])
->getMock();
var_dump(get_class_methods($mockController));
}
编辑:var_dump 的结果:
array(18) {
[0]=>
string(5) "index"
[1]=>
string(11) "__construct"
[2]=>
string(6) "launch"
[3]=>
string(8) "continue"
[4]=>
string(6) "setCss"
[5]=>
string(5) "setJs"
[6]=>
string(4) "meta"
[7]=>
string(6) "render"
[8]=>
string(14) "initController"
[9]=>
string(33) "__phpunit_initConfigurableMethods"
[10]=>
string(27) "__phpunit_setOriginalObject"
[11]=>
string(34) "__phpunit_setReturnValueGeneration"
[12]=>
string(30) "__phpunit_getInvocationHandler"
[13]=>
string(21) "__phpunit_hasMatchers"
[14]=>
string(16) "__phpunit_verify"
[15]=>
string(7) "expects"
[16]=>
string(6) "method"
[17]=>
string(7) "__clone"
}
谢谢
我的建议:跑步。 PHPUnit 正在走向衰落,因为它的作者让它变得越来越固执己见,并不断删除、删除、删除、删除、删除功能,完全不顾现有用途,甚至不顾基本的可操作性。寻找替代方案,或者坚持使用仍然具有有用功能的旧版本 PHPUnit。