3

作成中の Symfony の機能テストを行いたいと考えていますcommandQuestion個人を関連付けることで、ヘルパー クラスを利用してい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は問題ありませんが、この場合、バリデーターが適切に記述されていることを確認するために全体をテストしたいと考えています。

この場合、最良の選択肢は何ですか?バリデーターの単体テストは問題ありませんが、ユーザーの観点からブラック ボックスとして機能テストを行いたいと考えています。

4

1 に答える 1