Bu muhtemelen oldukça basit bir soru ama itiraf edeceğim, sıkışıp kaldım.Birim Testi IHttpActionResult Controller - 200 OK için test başarısız oluyor
IHttpActionResult
döndüren bir denetleyicim var ve bunun için birim sınamaları yazmam gerekiyor.
public IHttpActionResult GetPerson(int id) {
Person person = repository.Get(id);
if (person == null) {
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return Ok(new {
User = person
});
}
İşte birim test var:
İşte kontrolör var
[TestMethod]
public void GetReturnsValidPerson() {
var userController = new UserController();
IHttpActionResult actionResult = userController.GetPerson(1);
Assert.IsInstanceOfType(actionResult, typeof(OkResult));
}
Ve burada testi hata var: Assert.IsInstanceOfType başarısız
. Beklenen türü: System.Web.Http.Results.OkResult mevcut tipi: System.Web.Http.Results.OkNegotiatedContentResult1 [<> f__AnonymousType11 [DataAccess.BO.Person]]
tam olarak burada neler oluyor ? Denetleyiciden dönüş bir HTTP 200 Ok cevabıdır. Neden bu OkNegotiatedContentResult
bekleniyor?
Sormadan önce belgeleri ve çok fazla blogu kontrol ettim, çünkü oldukça basit görünüyor. Bu işe yaramazsa o zaman? Assert.IsInstanceOfType (actionResult, typeof (OkNegotiatedContentResult)); '? Eşleşmeyen türlerden dolayı hala hata alıyorum. –
Patrick
Bu satırın dönüş türünü 'IHttpActionResult actionResult = userController.GetPerson (1); '' OkNegotiatedContentResult' olarak ayarladınız mı? Bu tür testler gereksiz olsa da. Sıfır dönüşü test etmek en iyisi ve yaptığım –
döndürdüğüm nesne, onu çevirmem ve yayın başarısız. System.InvalidCastException: 'System.Web.Http.Results.OkNegotiatedContentResult'1 [' f__AnonymousType1'1 [DataAccess.BO.Person]] türünde bir nesne türetilemiyor '' System.Web.Http.Results.OkNegotiatedContentResult yazın '1 [System.Web.Http.Results.OkResult] '.' Satırı değiştirdi var actionResult = (OkNegotiatedContentResult) userController.GetPerson (1);'. Sanırım, HTTP durum kodunu değil, nesnenin gerçek sonucunu test edeceğim. Üzgünüz, bu aptalca, Web API ile bu tür bir test için yeniyim. –
Patrick