如何在 C# 中使用 Microsoft Fakes 在接口中存根通用方法定义
How to stub out a generic method definition in an interface using Microsoft Fakes in c#
我有一个单元测试,它使用 Microsoft Fakes 截断了以下界面:
public interface ITable
{
Task<TableResult> Retrieve(string tableReference, string partitionKey, string rowKey);
}
存根看起来像这样:
ITable table = new MessagesAPI.Azure.Fakes.StubITable()
{
RetrieveStringStringString = delegate
{
TableResult tableResult = new TableResult();
return Task.FromResult(tableResult);
}
};
这很好用。但是我想将界面更改为更通用,如下所示:
public interface ITable
{
Task<TableResult> Retrieve<T>(string tableReference, string partitionKey, string rowKey)
where T : ITableEntity;
}
问题是我如何将这个新版本的界面存根?我无法正确使用语法。
有什么想法吗?
您将行为设置如下:
var table = new MessagesAPI.Azure.Fakes.StubITable();
table.RetrieveOf1StringStringString<ITableEntity>(
(tableReference, partitionKey, rowKey) =>
{
TableResult tableResult = new TableResult();
return Task.FromResult(tableResult);
});
我有一个单元测试,它使用 Microsoft Fakes 截断了以下界面:
public interface ITable
{
Task<TableResult> Retrieve(string tableReference, string partitionKey, string rowKey);
}
存根看起来像这样:
ITable table = new MessagesAPI.Azure.Fakes.StubITable()
{
RetrieveStringStringString = delegate
{
TableResult tableResult = new TableResult();
return Task.FromResult(tableResult);
}
};
这很好用。但是我想将界面更改为更通用,如下所示:
public interface ITable
{
Task<TableResult> Retrieve<T>(string tableReference, string partitionKey, string rowKey)
where T : ITableEntity;
}
问题是我如何将这个新版本的界面存根?我无法正确使用语法。
有什么想法吗?
您将行为设置如下:
var table = new MessagesAPI.Azure.Fakes.StubITable();
table.RetrieveOf1StringStringString<ITableEntity>(
(tableReference, partitionKey, rowKey) =>
{
TableResult tableResult = new TableResult();
return Task.FromResult(tableResult);
});