【问题标题】:Mock created using PHPUnit return "NULL" when class was called调用类时使用 PHPUnit 创建的模拟返回“NULL”
【发布时间】:2011-06-16 07:15:25
【问题描述】:

代码:

$mockObject = $this->getMock('ORM_User'); $mockObject->expects($this->at(0)) ->方法('xxx') ->with($this->equalTo('a')) ->will($this->returnValue('aaa')); $mockObject->expects($this->at(1)) ->方法('xxx') ->with($this->equalTo('b')) ->will($this->returnValue('bbb')); var_dump("-".$mockObject->xxx('a')); var_dump($mockObject->xxx('b')); $tmp = 新 ORM_User(); var_dump($tmp->xxx('a')); var_dump($tmp->xxx('b'));

输出:

字符串(4)“-aaa” 字符串(3)“bbb” 空值 空值

【问题讨论】:

  • 在你的代码中模拟返回数据,真实对象返回空值。
  • zerkms,有什么办法吗?谢谢

标签: php unit-testing phpunit


【解决方案1】:

完全按照你说的做,就我所见,工作正常。

您创建一个“假”ORM_User 并告诉 xxx 函数返回“aaa”和“bbb”,然后它就会这样做。

然后你创建一个 real ORM_USER 并调用它,它返回 null 但这超出了 phpunit 的范围。你只是在给真正的班级打电话,我看不出你在哪里。

也许可以告诉我们你想做什么?

【讨论】:

  • 附加:您(Felipe)似乎使用__call() 来捕获对未定义方法的所有调用并返回null。如果没有,您应该考虑方法的命名约定(xxx() 不是一个好名字)。
  • KingCrunch,名字“xxx”只是一个例子:D
  • edorian,我终于做到了...谢谢
猜你喜欢
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
  • 2018-04-27
  • 2017-09-12
  • 2020-03-14
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
相关资源
最近更新 更多