【问题标题】:How to Set the content for HttpResponseMessage during a unit test?如何在单元测试期间设置 HttpResponseMessage 的内容?
【发布时间】:2020-10-14 17:21:30
【问题描述】:

我正在编写一个单元测试,其中我正在测试一个连接到外部服务的服务。

服务代码:

var request = new APIRequest
{
    Query = query
};

var response = await _httpService.SendRequestAsync(_configuration.ApiUrl, HttpMethod.Post, request, _configuration.Username, _configuration.Password);

if (response.IsSuccessStatusCode)
{
    var result = await response.Content.ReadAsAsync<Result>();
    return result;
}

我为上述服务方法编写的单元测试。

public async void GetPerformance_OKResults()
{
    //ARRANGE
    var resultToReturn = MockedEntitiesRepository.mockNetworkResult;
    HttpResponseMessage mockResponse = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
    mockResponse.Content = new ObjectContent(Type.GetType(resultToReturn), resultToReturn, MediaTypeFormatter.)

    mockHttpService.Setup(s => s.SendRequestAsync(applicationConfiguration.Object.Value.ApiUrl, HttpMethod.Post, It.IsAny<object>(), applicationConfiguration.Object.Value.Username, applicationConfiguration.Object.Value.Password)).Returns(Task.FromResult(mockResponse));

    service = new Service(applicationConfiguration.Object, mockHttpService.Object, mockLogger.Object, mockCacheService.Object);

    //ACT
    var result = await Service.GetPerformance(It.IsAny<long>(), It.IsAny<DateTimeOffset>(), It.IsAny<DateTimeOffset>(), It.IsAny<string>());

    // ASSERT
    Assert.Collection(result, item => Assert.Equal(something, something));
}

我想在单元测试中使用对象resultToReturn 设置对象mockResponse HTTPResponseMessage 内容,以便当代码进行实际调用时,它能够设置值并且我可以断言结果。

如何设置值?

【问题讨论】:

    标签: c# .net-core moq xunit


    【解决方案1】:

    如何设置值?

    Content 属性设置为包含JSON 序列化ResultStringContent,例如:

    var result = new Result();
    ...
    mockResponse.Content = new StringContent(JsonConvert.SerializeObject(result));
    

    【讨论】:

    • @ankur:这是回答你的问题还是剩下什么?
    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 2020-01-26
    • 2010-10-19
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    相关资源
    最近更新 更多