簡體   English   中英

RestSharp Moq對象Null異常C#REST單元測試

[英]RestSharp Moq Object Null Exception C# REST Unit Test

我在嘗試解決這個問題時遇到了困難。 任何幫助是極大的贊賞。 我的restClient.Object獲得空異常。 當我檢查restClient的.Object時,我得到了

消息 :調用的目標已引發異常。

內部異常 :值不能為空參數名稱:源

堆棧跟蹤

at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, Object[] args)
at Castle.DynamicProxy.ProxyGenerator.CreateClassProxyInstance(Type proxyType, List`1 proxyArguments, Type classToProxy, Object[] constructorArguments)
at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] constructorArguments, IInterceptor[] interceptors)
at Moq.Proxy.CastleProxyFactory.CreateProxy(Type mockType, ICallInterceptor interceptor, Type[] interfaces, Object[] arguments)
at Moq.Mock`1.<InitializeInstance>b__2()
at Moq.PexProtector.Invoke(Action action)
at Moq.Mock`1.InitializeInstance()
at Moq.Mock`1.OnGetObject()
at Moq.Mock.GetObject()
at Moq.Mock.get_Object()
at Moq.Mock`1.get_Object()

順便說一句,我指的是這一行代碼:

var client = new IncidentRestClient(**restClient.Object**);

我是否在嘲笑對象?

[Test]
public void Insert_Method_Throws_exception_if_response_StatusCode_is_not_Created()
{
    //Arrange
    var restClient = new Mock<RestClient>();
    restClient.Setup(x => x.Execute<RootObject>(It.IsAny<IRestRequest>()))
        .Returns(new RestResponse<RootObject>
        {
            StatusCode = HttpStatusCode.BadRequest 
        });

    var client = new IncidentRestClient(restClient.Object);

    Assert.Throws<Exception>(() => client.CreateNewIncident(insertIncidentRequest));
}

卸載並重新安裝Moq對我不起作用。 相反,將Mock對象上的CallBase屬性設置為true可以達到目的:

var restClientMock = new Mock<RestClient> { CallBase = true };

問題已解決。 我必須使用nuget卸載並重新安裝Moq。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM