【发布时间】:2015-05-10 05:38:35
【问题描述】:
我目前有一个基础服务类,我的所有服务都对其进行了扩展。这是其中一种方法的样子:
protected internal virtual T PerformServiceOperationWithExceptionHandling<T>(Func<T> func)
{
try
{
return func.Invoke();
}
...
}
在派生类中我这样调用方法:
public AddGuestResponse AddGuest(AddGuestRequest addGuestRequest)
{
return PerformServiceOperationWithExceptionHandling(() => AddGuestLogic(addGuestRequest));
}
我想测试 AddGuest 并确保“AddGuestLogic”作为基本方法中的参数传递?如何使用 nSubstitute 和 nUnit 实现这一点。我觉得不可能?
================================================ =
我最终使用了以下代码:
[Test]
public void AddGuest_WhenCalled_PerformsAddGuestLogicWithExceptionHandling()
{
Func<AddGuestResponse> addGuestLogic = null;
_guestService.PerformServiceOperationWithExceptionHandling(Arg.Do<Func<AddGuestResponse>>(arg => addGuestLogic = arg));
var addGuestRequest = new AddGuestRequest();
_guestService.AddGuest(addGuestRequest);
_guestService.ClearReceivedCalls();
addGuestLogic.Invoke();
_guestService.Received().AddGuestLogic(addGuestRequest);
}
_guestService 在我的设置方法中创建如下: Substitute.ForPartsOf();
【问题讨论】:
标签: c# unit-testing delegates nunit nsubstitute