我正在使用VS 2013 Premium中的墊片和僞造。當爲所有實例提供方法時,我會在運行時遇到錯誤「不兼容的方法和填充」。彙編沒有提供任何錯誤的跡象。僞造一個方法會導致「不兼容方法和填充」異常
有問題的代碼:
ShimViewModelBase.AllInstances.GetQueryCriteriaFromUriNavigationContext = (T, C) => { return new List<QueryCriteria>(); };
予理解的是,可以提供任何的洞察力。
按照要求,這是我試圖釋放的方法定義。
public List<QueryCriteria> GetQueryCriteriaFromUri(NavigationContext inContext);
完全錯誤:
An exception of type 'System.ArgumentException' occurred in Microsoft.QualityTools.Testing.Fakes.dll but was not handled in user code
Additional information: incompatible method and shim
堆棧跟蹤:
at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.AttachDetour(Object optionalReceiver, MethodBase method, Delegate detourDelegate)
at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShimMethod(Delegate optionalStub, Object optionalReceiver, MethodBase method)
at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType, Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes)
at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShimPublicInstance(Delegate optionalStub, Type receiverType, Object optionalReceiver, String name, Type returnType, Type[] parameterTypes)
at Infrastructure.Fakes.ShimViewModelBase.AllInstances.set_GetQueryCriteriaFromUriNavigationContext(Func`3 value)
at MaterialTracking.UI.Module.Tests.NotificationsListViewModelTests.OnNavigatedToTest() in c:\CodeCoverage\Material Tracking\MaterialTracking.UI.UnitTests\Views\NotificationsListView\NotificationsListViewModelTests.cs:line 65
我也試過這種
ShimViewModelBase sBaseViewModel = new ShimViewModelBase((ViewModelBase)notificationsListViewModel);
sBaseViewModel.GetQueryCriteriaFromUriNavigationContext = (T) => { return new List<QueryCriteria>(); };
我編輯提供的代碼以包含請求的內容 – Adrien
您可以分享更多關於'ViewModelBase'類嗎?它是一個抽象類嗎?內部課堂?它來自框架嗎?它是您的項目的自定義類嗎?你有一個顯示問題的最小項目嗎? – jessehouwing
ViewModelBase是我公司編寫的框架的一部分。這是一個抽象類。它有一個基類以及實現一些接口。 我沒有一個最小的項目,因爲我沒有能夠在不使用框架的情況下在另一個項目中重現它。 – Adrien