php - 我如何告诉 mock 在某些情况下调用原始方法?

标签 php mocking phpunit stub

我有一个类想在稍后的测试中模拟:

class Original {
  function calculate($a) { ... }
}

在测试中:

$mock = $this->getMock('Original',['calculate']);
$mock->expcets($this->any())
     ->will($this->returnValueMap([ 
      [1,'ABC'],
      [2,'BCD']
      // somehow tell $mock to call the original calculate() here
);

我想告诉 $mock 在特定条件下回退到原始的 calculate(),例如,如果参数不匹配任何提供的检查。据我阅读 PhpUnit 代码了解到,如果未找到匹配项,调用程序将返回 null :-?

最佳答案

$mock = $this->getMockBuilder(Original::class)
            ->setMethodsExcept(['calculate'])->disableOriginalConstructor()
            ->getMock();

无论如何,这将调用原始的计算函数。

关于php - 我如何告诉 mock 在某些情况下调用原始方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18944262/

相关文章:

javascript - 如何使用javascript从带有记录列表的输入框中获取平均值?

node.js - 用 nock 模拟一个开放的网络套接字

java - 延迟 EasyMock 验证

yii - 在 Yii 应用程序中运行单元测试的 fatal error

php - 单元测试和静态方法

php - 拉维尔 5 : Fatal error: Class 'TestCase' not found in

javascript - JSON获取表单数据的请求

php - 使用 jQuery 过滤列表项

php - 如何更改数据库行位置并维护 php 和 mysql 中的顺序

python - 如何在 Flask-SqlAlchemy 中模拟 <ModelClass>.query.filter_by()