在我班级的构造函数中说我注入了另一个类。在我的一种方法中,我的回归取决于那个班级。我该如何测试这种回报?
class MyClass {
protected $directoryThatIWant;
public function __construct(
\AnotherClass $directoryThatIWant
)
{
$this->directoryThatIWant = $directoryThatIWant;
}
public function getVarFolderPath()
{
return $this->directoryThatIWant->getPath('var');
}
}
和我的测试班:
class MyClassTest extends \PHPUnit_Framework_TestCase
{
const PATH = 'my/path/that/I/want';
protected $myClass;
protected function setUp()
{
$directoryThatIWantMock = $this->getMockBuilder(AnotherClass::class)
->disableOriginalConstructor()
->getMock();
$this->myClass = new myClass(
$directoryThatIWantMock
);
}
public function testGetVarFolderPath()
{
$this->assertEquals(self::PATH, $this->myClass->getVarFolderPath());
}
}
模拟对象中的方法返回null,因此我不确定如何确保$this->myClass->getVarFolderPath()
返回我想要的值。
谢谢!
答案 0 :(得分:1)
您只需要定义模拟对象的行为(如测试双phpunit指南here中所述)。
例如,您可以按如下方式更改设置方法:
protected function setUp()
{
$directoryThatIWantMock = $this->getMockBuilder(AnotherClass::class)
->disableOriginalConstructor()
->getMock();
$directoryThatIWantMock->expects($this->once())
->method('getPath')->with('var')
->willReturn('my/path/that/I/want');
$this->myClass = new myClass(
$directoryThatIWantMock
);
}
希望这个帮助