我想对command
我正在创建的 Symfony 进行功能测试。我Question
通过关联个人来利用助手类validator
:
$helper = $this->getHelper('question');
$question = new Question('Enter a valid IP: ');
$question->setValidator($domainValidator);
$question->setMaxAttempts(2);
我正在执行的测试是函数式的,所以为了模拟交互,我在 PHPUnit 的测试类中添加了如下内容。这是一段摘录:
public function testBadIpRaisesError()
{
$question = $this->createMock('Symfony\Component\Console\Helper\QuestionHelper');
$question
->method('ask')
->will($this->onConsecutiveCalls(
'<IP>',
true
));
...
}
protected function createMock($originalClassName)
{
return $this->getMockBuilder($originalClassName)
->disableOriginalConstructor()
->disableOriginalClone()
->disableArgumentCloning()
->disallowMockingUnknownTypes()
->getMock();
}
当然,当我测试超出Question
帮助程序的东西时,这个模拟就更好了,但在这种情况下,我想做的是测试整个事情,以确保验证器写得很好。
在这种情况下,最好的选择是什么?对我的验证器进行单元测试是可以的,但我想从用户的角度将其作为黑盒进行功能测试