我有一个我想测试的课程。这是代码:
class MyClass
{
function functionToTest() {
$class = new Example();
}
在PHPUnit中,我可以使用mocks / stubs来替换Example类吗?
在我的测试方法中:
class MyClassTest extends PHPUnit_Framework_TestCase {
function testFunctionTest() {
$testClass = new MyClass();
$result = $testClass->functionTest();
}
}
因此,不是使用实际的“Example”类,PHPUnit可以干预并使用mock来表示“new Example()”吗?
答案 0 :(得分:2)
最佳解决方案是将Example
实例注入functionToTest()
方法:
function functionToTest( Example $class )
然后你就可以在单元测试中模拟它了:
function testFunctionTest() {
$testClass = new MyClass();
$class = $this->getMock( 'Example' );
$result = $testClass->functionTest( $class );
}
但是,如果出于某种原因这种方法不适合您,请尝试使用set_new_overload()
扩展程序提供的test_helpers
功能。请参阅Sebastian Bergmann's blog中的更多信息。