为Microsoft echo bot创建内存测试服务器

时间:2018-10-29 12:42:37

标签: c# unit-testing server botframework

  

我的意图是使用其中一个单元测试项目对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);

    }

0 个答案:

没有答案