【发布时间】:2017-06-02 15:52:42
【问题描述】:
我们正在创建一个 web api,我正在尝试为 web api 设置集成测试,因此我们不必使用 PostMan 来验证它是否工作。
当我运行 webapi 并使用 PostMan 时,我得到了预期的结果。但是,当我尝试在内存托管中使用并运行 webapi 进行集成测试时,它总是返回 404。
使用 XUnit - 测试类如下。
public class UnitTest1
{
private readonly TestServer _server;
private readonly HttpClient _client;
public UnitTest1()
{
var host = new WebHostBuilder()
.UseStartup<Startup>();
this._server = new TestServer(host);
this._client = _server.CreateClient();
}
[Fact]
public async void TestMethod1()
{
var response = await this._client.GetAsync("api/objects");
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
List<obj> result = JsonConvert.DeserializeObject<IEnumerable<obj>>(responseString).ToList();
Assert.Equal(3, result.Count);
}
}
启动类:
public class Startup
{
public void Configuration(IAppBuilder app)
{
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
public void Configure()
{
var config = new HttpConfiguration();
WebApiConfig.Register(config);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
我必须在启动时添加配置方法,否则在初始化类时测试会失败。
【问题讨论】:
标签: asp.net-web-api integration-testing