我的意图是使用其中一个单元测试项目对bot框架项目进行单元测试。在单元测试项目(MS单元测试)中,我创建了测试服务器并尝试访问bot。现在,我不确定是否成功创建了测试服务器和客户端以及使用哪个主机(我看到它托管在端口80的本地主机)。
当通过控制台应用程序在主方法中调用BuildWebHost(args).Run()时,服务器已启动并在端口5000的本地主机上运行。我可以通过bot访问http // localhostt:5000 / api / messages模拟器。
我在MS单元测试项目中创建的测试服务器可以很好地调用.net核心api。
我不确定测试服务器是否可以托管bot项目并公开Directline 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);
}