PHPUnit 每次调用模拟方法都有不同的返回值

标签 php mocking phpunit

例如,我有一个模拟类,如下所示:

$mock= $this->getMockBuilder("SomeClass")->disableOriginalConstructor()->getMock();

$mock->expects($this->any())
     ->method("someMethod")
     ->will($this->returnValue("RETURN VALUE"));

someMethod 的唯一参数是一个数组 $arr

我想做的是在第一次调用someMethod时返回$arr[0]$arr[1] > 第二次,依此类推。

$arr 的大小是动态的。

如果可能的话,知道如何实现这一目标吗?

最佳答案

$mock->expects($this->any())
    ->method("someMethod")
    ->will($this->onConsecutiveCalls(1, 2, 3));

使用 onConsecutiveCalls,您可以为 someMethod 的每次调用设置返回值。第一次调用返回 1。第二次调用返回 2。第三次调用返回 3。

关于PHPUnit 每次调用模拟方法都有不同的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21542838/

相关文章:

mock RavenDb

exception - 在 zend 框架中运行 Controller 单元测试时出现 "No default module defined for this application"异常

php - 主菜单链接也显示在 WP 管理面板的子菜单上

php - 将 php 脚本作为守护进程运行

ruby-on-rails - 如何获取查询以返回我的模拟对象?

php - 阻止 PHPUnit 的 DBUnit 在数据库中插入 XML 数据集

PHPUnit成功回调函数?

php - 将数组重构(转置)为唯一键

php - 使用关系数据库来存储面对面游戏的结果

java - 我如何在 JMockit 中模拟具有通用对象的方法?