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

前端之家收集整理的这篇文章主要介绍了php – 在同一个类中测试一个方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在同一个类中模拟我正在测试的方法.
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();
原文链接:https://www.f2er.com/php/139659.html

猜你在找的PHP相关文章