【问题标题】:Cannot reslove symbol 'CreateResponse'无法解析符号“CreateResponse”
【发布时间】:2020-05-13 09:18:59
【问题描述】:

我想对使用 HttpClientFactory 的存储库进行单元测试。我提出了问题how do i unit test a repo that calls IHttpClientFactory with Nunit。很有帮助的人建议我检查How to mock the new HttpClientFactory in .NET Core 2.1 using Moq 提出的类似问题。 按照建议的解决方案,我偶然发现了另一个问题,该问题投票最多的方法不起作用。 解决方案中的代码行是

_handlerFunc = (request, cancellationToken) => Task.FromResult(request.CreateResponse(HttpStatusCode.OK));

request.CreateResponse的方法似乎对于请求对象不存在。我使用的是asp.netcore 3.1

【问题讨论】:

    标签: c# unit-testing delegates nunit asp.net-core-3.1


    【解决方案1】:

    CreateResponse是一种扩展方法,使用请求创建对应的响应。

    您可以放弃该扩展方法并手动创建HttpResponseMessage

    _handlerFunc = (request, cancellationToken) => 
        Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK });`
    

    【讨论】:

    • 谢谢我刚刚做到了。现在new HttpConfiguration() 出现问题,它似乎在 asp.net core2.1 支持的 System.Web.Http 命名空间下,并且正在使用 asp.netcore 3.1。请帮助我真的坚持这些测试..似乎没有任何工作
    • @DavidTembo remove HttpConfiguration 如果您手动创建响应。它不会被需要。它在那里是因为扩展方法需要它。
    • 那么我如何在没有扩展方法的情况下安排测试。如果没有扩展方法,我会收到错误 `` 提供了无效的请求 URI。请求 URI 必须是绝对 URI,或者必须设置 BaseAddress。在 System.Net.Http.HttpClient.PrepareRequestMessage``
    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多