次のテストケースがあります。
[Test]
public void MarkAsSuccessfulTest()
{
//setup data
var payment = Util.DbUtil.CreateNewRecurringProfilePayment();
//unit test
var mockNotificationSender = new Mock<IMarkAsSuccessfulNotificationSender>();
var mockCommandHandler = new Mock<IDbCommandHandler<RecurringPaymentMarkAsSuccessfulCommand>>();
var classUnderTest = new RecurringProfileMarkLastPaymentAsSuccessful(mockCommandHandler.Object, mockNotificationSender.Object);
classUnderTest.MarkAsSuccessful(payment.RecurringProfile);
mockCommandHandler.Verify(x=>x.Handle(It.IsAny<RecurringPaymentMarkAsSuccessfulCommand>()), Times.Once());
mockNotificationSender.Verify(x=>x.SendNotification(payment), Times.Once());
}
問題は次の行にあります。
mockCommandHandler.Verify(x=>x.Handle(It.IsAny<RecurringPaymentMarkAsSuccessfulCommand>()), Times.Once())
これにより、.Handle()
メソッドが呼び出されたことが確認されます。ただし、これはテストには十分ではありません - これ.Handle()
は、1 つのプロパティを持つコマンド パラメーターを取ります - Payment
。このパラメーターが実際に変数と一致していることを確認したいと思いpayment
ます。
これは可能ですか、それともコード設計の一部に問題がありますか?