c# - 设置一个方法来返回作为参数传递的函数的返回值

标签 c# moq

我有:

public T MethodNameHere<T>(Func<T> func)
{
  return func.Invoke();
}

如何为该方法设置模拟。大致如下:

this.mockService.Setup(a => a.MethodNameHere(It.IsAny<Func<Guid>>())).Returns(...?...);

如何返回无论Func返回什么?

最佳答案

获取 Returns 委托(delegate)中传递的参数并调用它

this.mockService
    .Setup(_ => _.MethodNameHere(It.IsAny<Func<Guid>>()))
    .Returns((Func<Guid> func) => func());

或者

this.mockService
    .Setup(_ => _.MethodNameHere(It.IsAny<Func<Guid>>()))
    .Returns((Func<Guid> func) => func.Invoke());

引用Moq Quickstart

// access invocation arguments when returning a value
mock.Setup(x => x.DoSomethingStringy(It.IsAny<string>()))
        .Returns((string s) => s.ToLower());
// Multiple parameters overloads available

关于c# - 设置一个方法来返回作为参数传递的函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53750934/

相关文章:

c# - Moq - 设置 .Equals 方法返回 false

c# - 从 Grib2 天气文件 C# 中提取值?

mono - 如何停止modevelop 添加**-noconfig** 编译选项?

c# - 支持.Net Framework4.0的Eclipse IDE、C#和VB.Net插件

c# - 使用 DTO 保持 DRY

asp.net-mvc - 如何在具有数据库调用的 ASP.net MVC 中正确测试 Controller

unit-testing - 在 .NET Core 中的内存数据库与 Moqing 框架

c# - 如何验证字典参数?

c# - 如何从 ASP.NET Core 表单获取嵌套字段?

c# - 如何获取客户端确认框的值来进行服务器端操作?