Я работаю с Shims и подделками в VS 2013 Premium. Когда Shimming из метода для всех экземпляров, я получаю ошибку «несовместимый метод и прокладку» во время выполнения. Компиляция не показывает никаких ошибок.Faking метод приводит к исключению «несовместимого метода и shim»
Код в вопросе:
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