当前位置: 首页 > 知识库问答 >
问题:

使用HttpClient.getAsync()进行UTest[重复]

党宇定
2023-03-14

我已经阅读了一些关于如何模拟或模拟HttpClient的文档,但是我不能成功地为我的单元测试复制。到目前为止,我还不能接口HttpClient,所以我选择注入HttpMessageHandler,其想法是设置它,以便返回对客户机的任何调用的响应。

internal async Task Poll(Func<TimeSpan?, HttpClient> httpClientFactory, CancellationToken cancellationToken)
{
    using (var client = httpClientFactory(_requestTimeout))
    {
        try
        {
            using (var response = await client.GetAsync(url, cancellationToken).ConfigureAwait(false))
            {
                // Do stuff with that
            }
        }
    }
}
var response = new HttpResponseMessage(httpStatusCode) { Content = responseContent };

var mockHttp = new Mock<HttpMessageHandler>();
mockHttp.Protected()
    .Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(), ItExpr.IsAny<CancellationToken>())
    .ReturnsAsync(response);

var client = new HttpClient(mockHttp.Object);

var mockedClientFactrory = new Mock<Func<TimeSpan?, HttpClient>>();
mockedClientFactrory.Setup(clientFactory => clientFactory(It.IsAny<TimeSpan?>())).Returns(client);

共有1个答案

张积厚
2023-03-14

不需要模拟函数委托。

创建实际函数

//...

Func<TimeSpan?, HttpClient> clientFactrory = _ => client;

//...
 类似资料:
  • 我有这个代码。净核心。我们意识到Core现在不太适合我们,所以我一直在重构。Net 4.5.2和当我打电话

  • 我遇到的一个问题是水平导航栏。我已经使用flexbox实现了它。 我有一个导航条,当我缩小它时,列表项(有黑色边框)不会停留在无序列表容器中(有紫色边框) 根据我对每个flex box的理解,应该使用flex属性在父容器中调整大小。但是在我的例子中,列表项不会在无序列表容器中调整大小。以下是正在发生的事情的图片: 这是我的html代码:

  • Python 3.4和Pandas 0.15.0 df是一个数据帧,col1是一列。使用下面的代码,我正在检查值10的存在,并将这些值替换为1000。 这是另一个例子。这一次,我将根据索引更改col2中的值。 这两种情况都会产生以下警告: 最后 这将产生一个类似的警告,并附带一个建议: 我不确定我是否理解警告中指出的讨论。编写这三行代码的更好方法是什么? 请注意,这些操作是有效的。

  • 编辑:在测试用例5中,任务似乎处于状态。 我在.NET 4.5中使用System.net.http.HttpClient时遇到了一些奇怪的行为--其中“等待”调用的结果(例如)将永远不会返回。 只有在使用新的Async/Await语言功能和任务API的特定情况下才会出现这种情况--代码似乎总是在只使用延续时工作。

  • utest 简介 utest(unit test)是 RT-Thread 开发的单元测试框架。设计 utest 的初衷是方便 RT-Thread 开发者使用统一的框架接口编写测试程序,实现单元测试、覆盖测试以及集成测试的目的。 测试用例定义 测试用例(testcase,简称 tc)是为实现特定测试目标而执行的单个测试,是包括测试输入、执行条件、测试过程和预期结果的规范,是一个有明确的结束条件和明确