加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在同一个类中测试一个方法

发布时间:2020-12-13 14:02:58 所属栏目:PHP教程 来源:网络整理
导读:我想在同一个类中模拟我正在测试的方法. ClassA { function hardToTest($arg) { // difficult to test code } function underTest() { return $this-hardToTest('foo'); }} 我在想,我可以用反射来做到这一点,但也许这只是一个标志,我应该将hardToTest移动到
我想在同一个类中模拟我正在测试的方法.
ClassA {
   function hardToTest($arg) {
      // difficult to test code
   }

   function underTest() {
      return $this->hardToTest('foo');
   }
}

我在想,我可以用反射来做到这一点,但也许这只是一个标志,我应该将hardToTest移动到另一个对象中.

如果underTest()将“foo”传递给hardToTest(),则此测试将成功.这在PHPUnit的文档中被称为部分模拟,因为你只是嘲笑一些方法.
ClassATest {
    function testUnderTest() {
        $mock = $this->getMock('ClassA',['hardToTest']);
        $mock->expects($this->once())
             ->method('hardToTest')
             ->with('foo');
        $mock->underTest();
    }
}

我同意你的直觉,这种需求可能是一个代码气味,告诉你这个班太多了.

PHPUnit 5.4

由于getMock()在5.4中已被弃用,请改用getMockBuilder():

$mock = $this->getMockBuilder('ClassA')
             ->setMethods(['hardToTest'])
             ->ge??tMock();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读