で、送信者のオブジェクトがそうのように、私はEventHandlerのを考えてみましょう:ユニットテストのEventHandler
public SomethingHappended_Handler(object sender, EventArgs e)
{
var myobj = sender as MyClass();
myobj.DoSomethingImportant();
}
がどのように私はこのmyobjは、MyClassののタイプであることをテストすることができますか?私は、送信者が常にMyClassののものであろうことを知っているが、私はちょうど私が必要となる安全であると考えた:
if (myObj != null) //Close it
タイプがMyClassのない場合、このmyobjはnullになります。私がnullでないことをテストするために最善を知っているように、私がMyClass以外の送信者と異なるタイプを送信した場合、DoSomethingImportantを呼び出すことになるので、ヌルチェックが必要なことを証明する単体テストを作成する方法はありますか?
(myobj == null)... – Lloyd
@Lloydまだメソッドを呼び出すことができるように送信者をキャストする必要があります – Jon
基本的にはテストを表示するように要求していますあなたがしなければならないことをしているかどうかを問わず - IMHOあなたは、C#が文書化されているように動作するかどうかのレベルで "単体テスト"する必要はありません。 'as'は、キャストしようとしているオブジェクトがそのクラスまたはそのクラスのサブタイプでない限り、単にキャストしません。あなたが本当にしたいのであれば、 'as'を使って安全にキャストするもう1つのコードを書くか、 'is'キーワードを使って直接型をテストしてください。または、イベントハンドラはクラス内の単なるメソッドであり、任意のクラスと同じようにテストを記述します。 –