如何正确使用phpunit中的mockbuilder?

问题描述 投票:0回答:1

我正在尝试使用 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"
}

谢谢

php unit-testing reflection mocking phpunit
1个回答
0
投票

我的建议:跑步。 PHPUnit 正在走向衰落,因为它的作者让它变得越来越固执己见,并不断删除、删除、删除、删除、删除功能,完全不顾现有用途,甚至不顾基本的可操作性。寻找替代方案,或者坚持使用仍然具有有用功能的旧版本 PHPUnit。

© www.soinside.com 2019 - 2024. All rights reserved.