Unit testing 如何在codeception框架中模拟参数化方法

Unit testing 如何在codeception框架中模拟参数化方法,unit-testing,zend-framework2,codeception,phpunit,Unit Testing,Zend Framework2,Codeception,Phpunit,我有一个参数化方法,它接受字符串参数并在传递参数时返回数据。我正在使用codeception框架为phpzend项目编写单元测试 方法:getDataByView($view)$view可以是默认值,全部 所以我想模拟这个方法,让它按照这样的方式运行&根据传递的参数返回结果。我在codeception框架中没有找到方法,所以使用了phpunit代码。但在这方面遇到了问题 $map = array( array('default', $default),

我有一个参数化方法,它接受字符串参数并在传递参数时返回数据。我正在使用codeception框架为phpzend项目编写单元测试

方法:
getDataByView($view)
$view
可以是默认值,全部

所以我想模拟这个方法,让它按照这样的方式运行&根据传递的参数返回结果。我在codeception框架中没有找到方法,所以使用了phpunit代码。但在这方面遇到了问题

$map = array(
            array('default', $default),
            array('all', $all)
        );

$mock = $this->getMockBuilder('ViewTable')
        ->setMethods(['getDataByView'])
        ->disableOriginalConstructor()
        ->getMock();

$mock->expects($this->any())
        ->method('getDataByView')
        ->will($this->returnValueMap($map));
实际上,这段代码按照我的期望工作。因为我使用的是
setMethods()
,所以它调用ViewTable类构造函数。如果我不使用
setMethods
,那么它就不会调用构造函数

问题:

  • 我只想模拟类的一个方法,所以我使用了
    setMethods()
    但它调用模拟类构造函数。我不想那样。 如何在phpunit中解决它
  • 如何在codeception框架中模拟参数化方法