[英]How can I test/mock external code or external dependencies using moq?
我在單元測試中將最小起訂量用於我的代碼的 mocking。 在沒有外部依賴的情況下模擬代碼是可以的。 下面的代碼是我嘲笑的最后一個依賴項
/// <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);
中有很多場景和類要測試。 function。
我如何測試或模擬該類和依賴項。
你說IMonitorBookingServiceProxy.AutoCancelBooking
請求function里面有很多場景需要測試。 您想測試IMonitorBookingServiceProxy.AutoCancelBooking
中的功能,還是想根據IMonitorBookingServiceProxy.AutoCancelBooking
返回的不同響應測試ExecuteRequest
的功能?
mocking 的目的是刪除依賴項以測試您的代碼,所以,在我的代碼中
/// <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);
}
}
當我調用proxy.AutoCancelBooking(request);
它調用 Web API 這是無法模擬的依賴項,這就是為什么我們將生成模擬響應並從上面的 function 返回它的原因。 我已經做得對了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.