【发布时间】:2014-09-19 21:30:35
【问题描述】:
我正在使用 zend 2.2 和 zend/console 来创建 cli 脚本。该脚本提示用户使用以下代码输入姓名或电子邮件地址等信息
$name = Line::prompt('Enter Name: ', false, 100);
当用户使用脚本时,这可以正常工作。
我的问题是尝试对此进行单元测试。此时,当我在单元测试中调用调度时,它只是挂起并等待用户输入响应。显然这是个问题。
我的代码是:
public function testCliScript()
{
$consoleMock = $this->getConsoleMock();
$consoleMock->expects($this->any())->method('writeLine');
$this->dispatch('run cli--name=test --email=test@example.com');
}
最终调用
protected function getName()
{
$name = $this->getRequest()->getParam('name');
$nameOk = !empty($name);
while (!$nameOk) {
$nameOk = false;
$name = Line::prompt('Enter Name: ', false, 100);
// tie into filter
if (strlen($name) < 1) {
$this->getConsole()->writeLine('Name is Too Short');
continue;
}
$nameOk = true;
};
return $name;
}
如果有人对如何测试有任何建议,将不胜感激。
谢谢
【问题讨论】:
标签: php zend-framework phpunit