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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |