【发布时间】:2021-02-28 12:56:03
【问题描述】:
我经常想在控制器中模拟出一个组件或对象。我使用 controllerSpy 方法来做到这一点:
public function controllerSpy($event, $controller = null)
{
parent::controllerSpy($event, $controller);
$OrderConfirmation = $this->getMockBuilder('OrderConfirmation')
->setMethods(['send'])
->getMock();
$OrderConfirmation->expects($this->once())->method('send');
$this->_controller->OrderConfirmation = $OrderConfirmation;
}
问题是在每个测试中都设置了调用 send-Method 的期望。但这取决于场景,存在不发送确认的场景。我想在测试本身中配置期望,而不是在 controllerSpy 方法中全局配置。像这样的:
public function testAddOrder()
{
$this->_controller->OrderConfirmation->expects($this->once())->method('send');
$this->post('/add_order');
}
但她的问题是期望会丢失,因为整个 OrderConfirmation 对象稍后会被覆盖。以前有人解决过这个问题吗?
【问题讨论】:
标签: cakephp phpunit cakephp-3.0