【发布时间】:2014-01-16 06:27:23
【问题描述】:
我不知道如何为特定的通用方法设置垫片。这是实际方法的签名:
public IEnumerable<TElement> ExecuteQuery<TElement>(TableQuery<TElement> query, TableRequestOptions requestOptions = null, OperationContext operationContext = null) where TElement : ITableEntity, new();
这是我目前尝试(但失败)配置垫片的方式:
ShimCloudTable shimTable = new ShimCloudTable();
shimTable.ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<MyEntity> = (query, options, context) => {
return new List<MyEntity>();
};
编译器只是给了我几个“无效的表达式术语”错误,所以很明显我在这里遗漏了一些非常基本的东西。
编辑:这是由 MS Fakes 生成的 shim 签名:
public void ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<TElement>(FakesDelegates.Func<TableQuery<TElement>, TableRequestOptions, Microsoft.WindowsAzure.Storage.OperationContext, System.Collections.Generic.IEnumerable<TElement>> shim) where TElement : ITableEntity, new();
【问题讨论】:
-
你让我感到困惑...
ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext看起来不对...尤其是您的示例方法是ExecuteQuery -
这对我来说看起来超级脆弱……
-
是的,这就是 Fakes 的魔力。并不总是漂亮,但它可以完成工作。 msdn.microsoft.com/en-us/library/hh708916.aspx
-
@elgonzo 试试 obj-c :P
标签: c# generics microsoft-fakes