如何针对仅支持SSL的Web Api控制器对请求进行单元测试?

时间:2015-11-16 17:08:52

标签: c# unit-testing ssl asp.net-web-api2 owin

我有一个单元测试,它使用OWIN TestServer类来托管我的Web Api ApiController类进行测试。

当REST API没有将{(1}}本身的HTTPS(SSL)要求加入时,我首先编写了单元测试。

我的单元测试看起来像这样:

Controller

现在我已经应用了该属性来强制执行HTTPS,我的单元测试失败了。

如何修复我的测试,以便在所有条件相同的情况下,测试再次通过?

1 个答案:

答案 0 :(得分:5)

要修复此单元测试,您需要更改[TestMethod] [TestCategory("Unit")] public async Task Test_MyMethod() { using (var server = TestServer.Create<TestStartup>()) { //Arrange var jsonBody = new JsonMyRequestObject(); var request = server.CreateRequest("/api/v1/MyMethod") .And(x => x.Method = HttpMethod.Post) .And(x => x.Content = new StringContent(JsonConvert.SerializeObject(jsonBody), Encoding.UTF8, "application/json")); //Act var response = await request.PostAsync(); var jsonResponse = JsonConvert.DeserializeObject<JsonMyResponseObject>(await response.Content.ReadAsStringAsync()); //Assert Assert.IsTrue(response.IsSuccessStatusCode); } } 的基址。

创建服务器后,在创建的对象上设置TestServer属性以使用&#34; https&#34;地址。请记住,默认BaseAddress值为BaseAddress

在这种情况下,您可以使用http://localhost

更改的单元测试如下所示:

https://localhost