相关疑难解决方法(0)

phpunit mock方法使用不同的参数进行多次调用

有没有办法为不同的输入参数定义不同的模拟期望?例如,我有一个名为DB的数据库层类.此类具有名为"Query(string $ query)"的方法,该方法在输入时采用SQL查询字符串.我可以为此类(DB)创建模拟,并为依赖于输入查询字符串的不同Query方法调用设置不同的返回值吗?

php phpunit mocking

107
推荐指数
4
解决办法
7万
查看次数

PHPUnit中的模拟 - 使用不同参数的相同方法的多个配置

是否可以以这种方式配置PHPUnit mock?

$context = $this->getMockBuilder('Context')
   ->getMock();

$context->expects($this->any())
   ->method('offsetGet')
   ->with('Matcher')
   ->will($this->returnValue(new Matcher()));

$context->expects($this->any())
   ->method('offsetGet')
   ->with('Logger')
   ->will($this->returnValue(new Logger()));
Run Code Online (Sandbox Code Playgroud)

我使用PHPUnit 3.5.10,当我要求Matcher时它会失败,因为它需要"Logger"参数.这就像第二个期望是重写第一个,但是当我转储模拟时,一切看起来都不错.

php phpunit mocking

49
推荐指数
4
解决办法
2万
查看次数

在PHPUnit模拟对象中配置多个方法

我试图在PHP和PHPUnit中创建一个模拟对象.到目前为止,我有这个:

$object = $this->getMock('object',
                         array('set_properties',
                               'get_events'),
                         array(),
                         'object_test',
                         null);

$object
    ->expects($this->once())
    ->method('get_events')
    ->will($this->returnValue(array()));

$mo = new multiple_object($object);
Run Code Online (Sandbox Code Playgroud)

忽略了我那些可怕的不明确的对象名称,我明白我所做的是
- 创建一个模拟对象,配置2个方法,
- 配置'get_events'方法返回一个空白数组,并
- 将模拟放入构造函数.

我现在要做的是配置第二种方法,但我找不到任何解释如何做的事情.我想做点什么

$object
    ->expects($this->once())
    ->method('get_events')
    ->will($this->returnValue(array()))
    ->expects($this->once())
    ->method('set_properties')
    ->with($this->equalTo(array()))
Run Code Online (Sandbox Code Playgroud)

或者其他一些,但这不起作用.我该怎么办?

切线,这是否表明我的代码结构很差,如果我需要配置多个方法来测试?

php phpunit

6
推荐指数
1
解决办法
9125
查看次数

标签 统计

php ×3

phpunit ×3

mocking ×2