1
イベントをテストする必要があります。 私はクラスでイベントを起こしますが、私はテストでそれを取得しませんでした。 理由は何ですか? Object_TransferInterruptedEvent1がより新しいものです。 これはデモコードです。Mockを使ってイベントをテストする方法
public class A
{
public virtual event EventHandler<EventArgs<Tuple<Step, string>>> TransferInterruptedEvent;
public void Test()
{
this.OnEventTransferInterrupted(this.CurrentStep, "Transfer not valid");
}
protected void OnEventTransferInterrupted(Step step, string errorMsg)
{
if (this.TransferInterruptedEvent != null)
{
this.TransferInterruptedEvent(this,new EventArgs<Tuple<object, string>>(new Tuple<object, string>(step, errorMsg)));
}
}
}
テスト
var mock=new Mock<A>()
EventArgs<Tuple<S3Server.Step, string>> mess;
mock.Object.TransferInterruptedEvent += Object_TransferInterruptedEvent1;
mock.Object.Test();
Assert.IsTrue(mess.Value.Item1 == S3Server.Step.TransferValidation);
Assert.IsTrue(mess.Value.Item2 == "Transfer not valid");
private void Object_TransferInterruptedEvent1(object sender, EventArgs<Tuple<object, string>> e) {
mess=e;
}