2016-07-21 3 views
1

私はユニットテストで初心者です。 私のテスト環境はLaravelのPHPUnitです。ユニットテストの方法には、phpunitによって複数の内部コール保護/プライベートメソッドがありますか?

私は単体テスト方法を知りたいのですが、メソッドがPHPUnitによってマルチコール保護/プライベートメソッドを持っていますか?

これらのprotected/privateメソッドは、期待値を返すだけでなく、失敗した場合に例外をスローします。

example.phpおよびExampleTest.php

重要な質問は、method2またはmethod3 throwsexceptionをテストする場合は、prev protected/privateメソッド(method1またはmethod1 + method2)を渡す必要があります。それとも良いアイデアですか?

答えて

0

パブリックメソッドで捕捉できないような例外をスローする場合は、汎用の\Exceptionではなくカスタム例外をスローする必要があります(実際は良い方法です)。だからあなたのテストでは、カスタム例外がスローされることを期待できます。

一般的に言えば、コンストラクタ自身がargsの存在をチェックし、パブリックメソッドが常に呼び出されるか、パブリックメソッドがそれらのチェックを行う場合は、コンストラクション時にスローする方が良いと思います。それは投げ回す回数を制限します。プライベートメソッドをテストするに

PHPUnitの著者の思考 - https://sebastian-bergmann.de/archives/881-Testing-Your-Privates.html

+0

もちろん私は、カスタム例外を作り、どのモデルが見つからない、その後投げます。 私はちょうどメソッドと混同して、結果を得るために複数のメソッド/クラスに依存します。モックで模擬するのはよい方法ですか? – Lex

関連する問題