Создание в памяти тестового сервера для Microsoft echo bot - PullRequest
0 голосов
/ 29 октября 2018

Мое намерение состоит в модульном тестировании проекта платформы бота с использованием одного из проектов модульного тестирования. В проекте модульного тестирования (MS unit test) я создал тестовый сервер и попытался получить доступ к боту. Теперь я не уверен, успешно ли создан тестовый сервер и клиент и на каком хосте (я вижу, что он размещен на локальном хосте на порту 80).

Когда через консольное приложение я вызываю BuildWebHost (args) .Run () в основном методе, сервер работает и работает на локальном хосте через порт 5000. Я могу получить доступ к http // localhostt: 5000 / api / messages через бот эмулятор.

Тестовый сервер, созданный мной в модульном тестовом проекте MS, прекрасно работает для вызова .net core api.

Я не уверен, может ли тестовый сервер размещать проект бота и предоставлять прямой API.

    using EchoBot;// Bot project refernce
    using WebApiDotnetCore;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.TestHost;
    using System.Net.Http;
    using System;

     namespace MSUnitTestProject
    {
       class TestClientProvider:IDisposable
     {
    private TestServer server;
    public HttpClient httpClient { get; set; }
    public TestClientProvider()
    {
        //IWebHostBuilder builder = new WebHostBuilder().UseContentRoot(@"C:\Local\NETI\InMemoryServer\MyBotProjects\EchoBot")
        //                          .UseEnvironment("development").UseStartup<EchoBot.Startup>()
        //   .UseApplicationInsights()


        //IWebHostBuilder builder = new WebHostBuilder().UseStartup<WebApiDotnetCore.Startup>();
        IWebHostBuilder builder = new WebHostBuilder().UseStartup<EchoBot.Startup>();
        server = new TestServer(builder);
        httpClient = server.CreateClient();
    }

    public void Dispose()
    {
        server.Dispose();
        httpClient.Dispose();
    }
}

}

Модульный тестовый проект

    [TestMethod]
    public async Task BotTestMethod()
    {

        HttpResponseMessage response = await httpClient.GetAsync("api/messages");
        HttpStatusCode code = response.StatusCode;
        string result = response.Content.ReadAsStringAsync().Result;
        Assert.Equals(HttpStatusCode.OK, code);

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...