我正在测试课程:
class ClassName
{
public function MethodName()
{
// something
$objectName = new Object();
$variableName = $objectName->execute();
// something
}
}
我想创建对象的模拟.我不想调用实际方法execute().我不知道怎么用phpunit.
我知道依赖注入,但恕我直言这种情况并没有通过依赖注入来解决.
谢谢你的回答.我很抱歉我的英语.
解决方法:
实际上,这种情况可以通过依赖注入来解决.假设您没有在MethodName中实例化Object,而是注入它.无论是通过构造函数,设置器还是方法,对于该原理而言都无关紧要.
class ClassName
{
public function MethodName(Object $objectName)
{
// something
$variableName = $objectName->execute();
// something
}
}
因为你现在不instaniate你要测试的方法内的对象,你可以当你想测试一下它传递一个模拟.
public function testMethodName(){
$mock = $this->getMockBuilder('Object')->getMock();
$className = new ClassName;
$result = $className->MethodName($mock);
$this->assertTrue($result);
}
我没有运行这种测试方法,但我认为它说明了可测性的依赖注入点.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。