Мое намерение состоит в модульном тестировании проекта платформы бота с использованием одного из проектов модульного тестирования. В проекте модульного тестирования (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);
}