【发布时间】: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 内容,以便当代码进行实际调用时,它能够设置值并且我可以断言结果。
如何设置值?
【问题讨论】: