繁体   English   中英

网络核心:具有通用 Class T 和参数的最小起订量方法

Net Core: Moq Method with Generic Class T and Parameters

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试在下面将此方法起订量。 我将如何使用通用 Class T 起订一个方法? 以下是方法和目前正在尝试的解决方案,

方法:

    public async Task<TV> HttpPost<T, TV>(string url, T prm, string accessToken = null)
    {
        try
        {
            if ((accessToken ?? "").Length > 0)
                _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            using (var result = await _client.PostAsJsonAsync(url, prm))
            {
                result.EnsureSuccessStatusCode();
                using (var content = result.Content)
                {
                    var ret = await content.ReadAsJsonAsync<TV>();
                    return ret;
                }
            }
        }
        catch (Exception ex)
        {
            var message = $"Url: {url}, Data: {JsonConvert.SerializeObject(prm)}";
            ex.Data["Url"] = message;
            throw;
        }
    }

试图:

        var mock = new Mock<HttpDataLayerUtilsAsync>();
        mock.Setup(b => b.HttpPost(It.IsAny<string>, It.IsAny <CustomDataModelRequest>).Returns..

资源:

Mocking 对任何给定类型参数的泛型方法调用

1 个回复

您需要在设置中向HttpPost提供通用 arguments,例如:

//                           T                         TV
.Setup(b => b.HttpPost<CustomDataModelRequest, CustomDataModelResponse>(
  It.IsAny<string>(), 
  It.IsAny<CustomDataModelRequest>(), 
  null))

以及传递可选参数的值。

对于Return ,您可以使用:

.ReturnsAsync(new CustomDataModelResponse());

然后你可以这样称呼它:

var result = await mock.Object.HttpPost<CustomDataModelRequest, CustomDataModelResponse>("", new CustomDataModelRequest(), "");
1 Moq - 具有通用匿名参数的设置方法

我有一个带有以下签名的方法: 如您所见,该模型是通用类型。 从测试代码中调用该方法,如下所示: 我为提供者提供了一个模拟对象。 我需要伪造这个方法的调用,返回我提供的值,即我需要这样的东西: 测试运行时,不会返回我尝试设置的值。 我不能使用It.IsAny(),因为 ...

2 在 Moq 中模拟通用方法而不指定 T

我有一个带有方法的接口,如下所示: 我想模拟包含此方法的类,而不必为它可以用于的每种类型指定 Setup 方法。 理想情况下,我只想返回一个new mock&lt;T&gt;.Object 。 我如何实现这一目标? 看来我的解释不清楚。 这是一个示例 - 当我指定 T(此处为字符串)时,这现 ...

3 如何使用Moq模拟具有以具体类作为参数的方法的接口?

我有这种情况:2种方法的接口 这两种方法接受请求并返回响应 方法内部包含功能(检查权限并验证请求,并使用实体框架从数据库获取数据。 但是我想测试方法,而不仅仅是接口。 我已经成功测试了接口,但是现在我想输入方法并在其中进行测试。 代码示例: 现 ...

4 通用工厂方法和类 参数

我有一个静态工厂方法,其签名如下所示: 我正在尝试实现返回Class&lt;T&gt;对象的方法,该对象是上述getProvider的参数。 但是这样的定义不起作用: 你有什么建议? ...

5 Moq模拟通用类

在我的代码中包含以下内容: 工厂代码: ObjectFactory实现AbstractFactory 我希望能够模拟这个。 我创建了一个实现IContact的类 对于安装程序,我尝试了此操作: 和这个 在安装过程中,我得到以下信息: 附加 ...

6 如何让Moq验证具有out参数的方法

我有一个接口定义,其中方法定义了out参数 我有以下使用上述接口的类 在我的单元测试中,我试图验证是否调用了RestCommunication对象的PerformPost方法。 但无论我做什么,我都无法让Moq验证该方法是否被调用 但我收到以下错误 我该如何 ...

7 通用列表作为方法的参数

如何使用List&lt;T&gt;作为方法的参数,我尝试这种语法: 我有编译错误: 找不到类型或命名空间名称“T”(您是否缺少using指令或程序集引用?) ...

8 Action的通用方法 参数

所以,我确信之前已在某处回答过,但我无法在任何地方找到它。 希望一些仿制药大师可以提供帮助。 参数类型'T'不能赋予参数类型'Orangutan' 参数类型'IAnimal'不能分配给参数类型'T' 编辑:基于Yuriy和其他人的建议 ,我可以做一些演员,如: ...

9 C# 接口 { T 函数 (T t);} : 具有通用返回类型的参数化方法的通用接口

我想我会使用一些(我认为是)简单的泛型来在某些业务类上强制执行 CRUD。 例如。 然后也许,我可以有一个 NoteAdapter 来使用 Note 类来执行 C R UD,例如。 但是出于某种原因,如果我同时拥有泛型返回类型和使用相同泛型类型参数化的函数,则编译器会感到困惑。 也就是说,如 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM