0

JustMock を使用して NHibernate ICriteria をスタブしようとしています。

具体的には、オブジェクトの配列で呼び出されたときに List<> メソッドをスタブしようとしています。

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}
    });

2 行目 (アレンジ) を実行すると、エラーが発生します。

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 \x7\x5\x2.\x8\x2.\x3\x15\x2(Type \x8, MethodBase , BindingFlags \x1C\xF\x2)   at \x6\x2.\x6\x2.Create(Object , MethodInfo \x6, Boolean \x6\x2)   at \x7\x5\x2.\x11\x14\x2.\x11\x13\x2(\xF\x2 \x5\xF)   at Telerik.JustMock.Mock.\x1F.\x15\x2(\x11\x14\x2 \x2)   at \x7\x5\x2.\x5\x14\x2.\x1C[\x4\x14\x2,\x5\x2](\xF\x2 \xF\x2, Func`2 \x3\x14\x2)   atThreshold.DeviceManagerGateway.UnitTests.Queries.DeviceNetworkStatusQueryFacts.RetrieveDevicesAsDeviceNetworkStats() in DeviceNetworkStatusQueryFacts.cs: line 24

ICriteriaList()とメソッドの両方がありList<T>()、コンパイラがジェネリック バージョンではなく非ジェネリック バージョンのListメソッドを選択しているように見えます。私が正しく、間違ったバージョンのListメソッドを選択していると仮定すると、これを強制する方法を知っている人はいますか? または、それが別の問題である場合、誰かがこれを解決する方法を教えてもらえますか?

4

1 に答える 1

0

最近のバージョンの JustMock で試してみましたが、問題は発生しません。

難読化の存在から判断すると、かなり古いバージョンを使用しているようです。

JustMock の最新バージョンは、NuGetまたは Telerik アカウントからダウンロードできます。

于 2014-11-03T16:36:18.420 に答える