HTTP Azure Функция UnitTest - PullRequest
0 голосов
/ 03 мая 2019

У меня есть функция http Azure, и я пишу модульный тест этой функции.Я получаю ниже сообщение об ошибке

Сообщение: метод теста CAT.AMS.Functions.Tests.RuleCacheRefreshFunctionTests.RuleCacheRefreshFunction исключение: System.InvalidOperationException: у запроса нет связанного объекта конфигурации или предоставленной конфигурациибыл нулевым.

UnitTest

[TestMethod]
    public async Task RuleCacheRefreshFunction()
    {
        // Arrange
        mockLog.Setup(x => x.Info(It.IsAny<string>()));
        mockRuleService.Setup(x => x.RefreshRuleCache()).Returns(Task.FromResult(0));
        HttpRequestMessage httpRequestMessage = new HttpRequestMessage() {
            RequestUri = new System.Uri("http://localhost:0895/RuleCacheRefreshFunction"),
            Method = HttpMethod.Get                
        };            
        // Act
        await CAT.AMS.RuleFunctions.RuleCacheRefreshFunction.Run(httpRequestMessage, mockRuleService.Object, mockLog.Object);

        // Assert
        Assert.IsTrue(true);
    }

Я предполагаю, что я не передаю какое-либо существенное значение в свойстве "HttpRequestMessage".Есть идеи?

1 Ответ

0 голосов
/ 06 мая 2019

System.InvalidOperationException: у запроса нет связанного объекта конфигурации, или предоставленная конфигурация была нулевой.

Как сказал Джокк, при тестировании запроса вне http-сервера вам нужно предоставить запросу HttpConfiguration.

Чтобы исправить это, нам нужно добавить HttpConfiguration объект через словарь свойств, как показано ниже:

Request = new HttpRequestMessage()
{
    Properties = { { HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration() } },
    RequestUri = new System.Uri("http://localhost:0895/RuleCacheRefreshFunction"),
    Method = HttpMethod.Get  
}

Я добавил Microsoft.AspNet.WebApi пакет NuGet для добавления System.Web.Http.HttpConfiguration

...