我正试图使用JustLock来存根一个NHibernate ICriteria。
特别是,我正在尝试截断列表<>方法(当使用对象数组调用时):
var mockCriteria = Mock.Create<ICriteria>();
Mock.Arrange(() => mockCriteria.List<object[]>()).Returns(
new object[]
{
new object[] {"CompanyX", 1, 1, 1, 0},
new object[] {"CompanyX", 1, 1, 1, 0},
new object[] {"CompanyY", 2, 1, 1, 0}
});
当我执行第二行(排列)时,我得到了错误:
System.InvalidOperationExceptionSystem.Collections.IList List() is not a GenericMethodDefinition. MakeGenericMethod may only be called on a method for which MethodBase.IsGenericMethodDefinition is true.
at System.Reflection.RuntimeMethodInfo.MakeGenericMethod(Type[] methodInstantiation)
at x7x5x2.x8x2.x3x15x2(Type x8, MethodBase , BindingFlags x1CxFx2) at x6x2.x6x2.Create(Object , MethodInfo x6, Boolean x6x2) at x7x5x2.x11x14x2.x11x13x2(xFx2 x5xF) at Telerik.JustMock.Mock.x1F.x15x2(x11x14x2 x2) at x7x5x2.x5x14x2.x1C[x4x14x2,x5x2](xFx2 xFx2, Func`2 x3x14x2) atThreshold.DeviceManagerGateway.UnitTests.Queries.DeviceNetworkStatusQueryFacts.RetrieveDevicesAsDeviceNetworkStats() in DeviceNetworkStatusQueryFacts.cs: line 24
ICriteria
同时具有List()
和List<T>()
方法,并且看起来编译器正在获取List
方法的非泛型版本而不是泛型版本。假设我是正确的,并且它使用了错误版本的List
方法,有人知道如何强制执行吗?或者,如果这是一个不同的问题,有人能告诉我如何解决吗?
我在最近版本的JustLock中尝试过,但没有出现问题。
从混淆的存在来看,你似乎在使用一个相当旧的版本。
您可以从NuGet或Telerik帐户下载最新版本的JustLock。