C# 单元测试c时如何删除func参数#

C# 单元测试c时如何删除func参数#,c#,unit-testing,moq,C#,Unit Testing,Moq,我正在尝试编写一些测试,但我不确定如何处理设置moq模拟的参数。有人能建议我如何正确地完成这行代码吗? 非常感谢, 我的最低起订量代码行 该参数的类型如下所示,用于返回(…),我不确定如何处理该返回 参数智能感知 下面显示了我正在尝试的方法 方法定义 public static async Task<CommandResult> SendSupportAsync(this IBus bus, Command command, bool withLogging = true) 如

我正在尝试编写一些测试,但我不确定如何处理设置moq模拟的参数。有人能建议我如何正确地完成这行代码吗? 非常感谢,

我的最低起订量代码行

该参数的类型如下所示,用于返回(…),我不确定如何处理该返回

参数智能感知

下面显示了我正在尝试的方法

方法定义

public static async Task<CommandResult> SendSupportAsync(this IBus bus, Command command, bool withLogging = true)

如果要模拟返回值,则可以为其创建模拟

var resultMock = new Mock<Task<CommandResult>>();
如果您不想模拟结果,那么您可以创建一个实例并返回它

bus.Setup(x=>c.SendSupportAsync(new TagCommand(ID, MID))).Returns(resultMock.object);
bus.Setup(x=>c.SendSupportAsync(new TagCommand(ID, MID))).Returns(objCommandResult);

我不知道MOQ模拟了静态方法。我认为您必须获得一个测试工具,如TypedMock或Telerik提供的工具。对于您的情况,由于您返回异步任务,Moq 4.2添加了ReturnsAsync()扩展方法。但是我没有使用它的经验。这里有一个相关的线程讨论了如何返回异步任务。谢谢Suresh,我已经更新了这个问题,我得到了一个编译器错误
bus.Setup(x=>c.SendSupportAsync(new TagCommand(ID, MID))).Returns(objCommandResult);