【发布时间】:2016-06-20 10:47:14
【问题描述】:
根据我对 PHPUnit 文档的阅读,我希望以下代码可以创建 AuthorizationChecker 类的模拟,当调用 isGranted() 方法时将返回 false。但是,会调用原始方法。我做错了什么?
$auth = $this->getMockBuilder('Symfony\Component\Security\Core\Authorization\AuthorizationChecker')
->disableOriginalConstructor()
->setMethods(['isGranted'])
->getMock();
$auth->expects($this->any())
->method('isGranted')
->with($this->anything())
->will($this->returnValue(false));
$this->assertFalse($auth->isGranted('TEST'));
用 null 或空数组替换 setMethods() 的参数,或者完全删除调用,没有效果。也不会删除 expects() 和 with() 调用。
【问题讨论】:
-
您好,您可以尝试模拟不是finally的AuthorizationCheckerInterface接口:取决于您需要做什么,通常类定义为使用类的接口。
-
嗨,Matteo,感谢您的回答和建议。我最终只是模拟了界面,效果很好。
标签: php unit-testing phpunit