2014-01-15 35 views
9

我无法理解如何为特定通用方法设置垫片。下面是实际的方法签名:微软为通用方法假货垫片

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假货产生的垫片签名:我无法找到这个覆盖任何官方文档

public void ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<TElement>(FakesDelegates.Func<TableQuery<TElement>, TableRequestOptions, Microsoft.WindowsAzure.Storage.OperationContext, System.Collections.Generic.IEnumerable<TElement>> shim) where TElement : ITableEntity, new(); 
+0

你混淆我...'ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext'看起来错了...你怎么尤其是实例方法是'ExecuteQuery' – Andrew

+0

这看起来supercalifragilisticexpialidocious我... – elgonzo

+1

呀这就是Fakes的魔力。并不总是漂亮,但它完成了工作。 http://msdn.microsoft.com/en-us/library/hh708916.aspx – superstator

回答

17

,但问题是非常简单的毕竟。我习惯了约定假货采用简单的方法,在那里你只需指定一个Func键你有兴趣,像这样的匀法代表:

shimAccount.CreateCloudTableClient =() => { return shimTableClient; }; 

当仿制药均有涉及,不过,假货创建方法将Func作为参数而不是直接暴露委托。因此,我需要的是:

shimTable.ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<MyEntity>((query, options, context) => 
{ 
    return new List<MyEntity>(); 
});