首页 > 解决方案 > 如何使用 moq 测试/模拟外部代码或外部依赖项?

问题描述

我正在使用 Moq 在单元测试中模拟我的代码。在没有外部依赖的情况下模拟代码是可以的。下面的代码是我嘲笑的最后一个依赖项

/// <summary>
/// Executes the request.
/// </summary>
/// <param name="booking">The booking.</param>
protected override void ExecuteRequest(BookingModel.Booking booking)
{
    var request = this.CreateRequest(this.TravelContext, booking);
    using (var proxy = this.TravelContext.CreateProxy<IMonitorBookingServiceProxy>())
    {
        var response = proxy.AutoCancelBooking(request);
        this.AddResponseInfos(response.ResponseInfos);
    }
}

我像这样模拟上面的代码

// mock the IMonitorBookingServiceProxy
Mock<IMonitorBookingServiceProxy> mockedMonitorBookingContext = new Mock<IMonitorBookingServiceProxy>() { DefaultValue = DefaultValue.Mock };
mockedMonitorBookingContext.Setup(x => x.AutoCancelBooking(It.IsAny<AutoCancelBookingRequest>())).Returns(autoCancelBookingResponse).Verifiable();
ProxyFactory.Configure<IMonitorBookingServiceProxy>(mockedMonitorBookingContext.Object);

它正确地向我返回了响应。但我的问题是函数内部有很多场景和类要测试proxy.AutoCancelBooking(request);

我如何测试或模拟该类和依赖项。

标签: c#asp.net-mvcunit-testingmockingmoq

解决方案


您说在请求函数中需要测试很多IMonitorBookingServiceProxy.AutoCancelBooking场景。您是要测试其中的功能IMonitorBookingServiceProxy.AutoCancelBooking还是要ExecuteRequest根据返回的不同响应测试功能IMonitorBookingServiceProxy.AutoCancelBooking


推荐阅读