2015-05-02 13 views
12

Web Api ile ilgili temel bilgileri öğreniyorum ve bir nesneyi Ok(object) numaralı telefondan döndürmek ve iletmek istiyorum. Böyle bir şey:Nesne HttpActionResult Ok yönteminden (Web Api) nasıl alınır?

[HttpGet] 
public IHttpActionResult Get() 
{ 
    var someString = ""; 
    return Ok(someString); 
} 

Şimdi bu yöntemi test etmek ve beklendiği gibi bu al() yönteminden döndürülen dize aynıysa kabul ettirmek isterler. Böyle bir şey olacaktır sanırım:

[TestMethod] 
public void TestGet() 
{ 
    IHttpActionResult result = controller.Get(); 
    Assert.AreEqual("", result.??); 
} 

Ben this soru gördüm ama iyi cevap HttpStatusCode değil geçirilen nesne doğrulamak için nasıl açıklayan edilir.

+2

yerine sonuç şeye tam olarak eşit olduğunu test? –

+0

@JonSkeet Haklısınız. Geçiş nesnesinin geçerli olup olmadığını test etmeye çalışmak yerine, bazı postconditionslar ekleyeceğim ve bunlara bağlı olarak, farklı "HttpActionResults" döndüreceğim. Çok teşekkür ederim. –

+0

aslında, döndürülen sonucu sınamak anlamında durumlar vardır. –

cevap

18

OkNegotiatedContentResult<string> sonucunu ve Content özelliğine erişerek döndürülen dizeye erişebilirsiniz.

[TestMethod] 
public void TestGet() 
{ 
    IHttpActionResult actionResult = controller.Get(); 
    var contentResult = actionResult as OkNegotiatedContentResult<string>; 
    Assert.AreEqual("", contentResult.Content); 
} 

Örnek kod adlı: Eğer sonuç umurumda ne http://www.asp.net/web-api/overview/testing-and-debugging/unit-testing-controllers-in-web-api

+6

@CodeCaster: güncellendi. Ama bazen kodun basit ve açıklayıcı olduğunu düşünüyorum. –

+0

Hata Satır "IHttpActionResult result = controller.Get();" : "IHttpActionResult actionResult = controller.Get();" –

+0

@Paul Gorbas: Teşekkürler, bu küçük bir hataydı, şimdi düzeltildi –