我正在尝试在下面将此方法最小化。 我将如何与通用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..

资源:

模拟给定类型参数的通用方法调用

#1楼 票数:2 已采纳

您需要在安装程序中为HttpPost提供通用参数,例如:

//                           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(), "");

  ask by GregDavis translate from so

未解决问题?本站智能推荐:

1回复

Moq在点网核心中进行依赖注入的单元测试中的设置方法是什么

我有一个.net核心网站,基于依赖注入,控制器是。 我想对Authenticate方法进行单元测试,单元测试类是 问题是,当我将断点放在authenticate方法上时,它将返回setupMock中存在的返回数据。 为什么它不进入数据库并返回真实数据。 第二个问题是断点没有输
1回复

如何在单元测试中使用 Moq 在异步方法中返回传递的参数?

我正在努力解决如何使用 Moq-Setup-Return 构造的问题。 首先,我的设置: 某些类型为IRepository -Interface 的存储库必须实现StoreAsync ,该方法返回一个 StoreResult 对象,其中包含存储的实体作为属性。 现在我尝试为 IReposit
1回复

MoQ 未设置 Returns 方法

您好,我正在使用 MoQ,我想了解为什么我的方法的返回值会被使用。 在下面的示例中,我正在使用模拟接口依赖项创建服务。我正在设置接口方法应返回的内容。 但是,当服务使用我的模拟依赖项时,返回值为 null ,而不是我在Returns方法中设置的值。 为什么会发生这种情况? 模型 模拟依赖
1回复

Moq上的扩展方法返回null

我尝试测试一些函数的结果,其中使用了对扩展方法的调用。 此扩展方法在接口上定义。 测试设置创建所述界面的模拟。 对于此模拟,配置了两个设置。 在模拟的接口实现上调用这些设置函数时,一切都按预期工作。 (请参阅TestMockSetupSourceClassA和TestMockSetup
1回复

在 UnitTest 中使用 Moq 模拟 PostAsync 和其他方法

我正在寻找几天如何模拟 HttpClient 并且大多数响应建议模拟 HttpResponseMessage - 特别是 SendAsync。 我尝试了所有这些,但每次我都会收到“连接失败 - 机器无法响应”的错误消息,这似乎根本没有嘲笑 HttpClient。 我有这样的事情: 然后我尝试
1回复

如何模拟返回IEnumerable的方法 在单元测试方法中?

我必须模拟一个返回IEnumerable的方法,如下所示。 我尝试了以下方法,但此调用未返回任何结果。 请让我知道如何模拟此实例? 注意:我想返回此模拟的数据。 谢谢
1回复

具有多个接口的模拟类

我正在尝试测试使用两个不同接口的方法。 使用Moq,我可以配置interfaces方法并设置一个return对象,但是无论我设置为Returns,只是执行的第一个方法都返回值,第二个方法返回null。 这是一个例子: 接口1 接口2 我要测试的课程 测试方法
3回复

如何使用 Moq 模拟 IMongoCollection.Find

我正在努力使用 Moq 为我的单元测试IMongoCollection.Find方法。 我试过的: 事情是我尝试使用Returns()任何内容,它不起作用,我希望能够返回可转换为List<Person>并且我无法模拟或创建IFindFluent<Person,Person&g