2015-05-02 8 views
12

Sto imparando alcune nozioni di base di Web Api e voglio restituire e passare un oggetto tramite Ok(object). Qualcosa di simile a questo:Come ottenere l'oggetto dal metodo Ok HttpActionResult (Web Api)?

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

Ora voglio provare questo metodo e di affermare se la stringa restituita da questo metodo get() è la stessa come previsto. I Guess sarà simile a questa:

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

ho visto this domanda, ma la risposta migliore sta spiegando come convalidare il HttpStatusCode, non l'oggetto passato.

+2

Piuttosto che mettendo alla prova che il risultato è esattamente uguale a qualcosa, che cosa vi preoccupate del risultato? –

+0

@JonSkeet Hai ragione. Invece di provare a verificare se l'oggetto che passa è valido, inserirò solo alcune postcondizioni e, a seconda di esse, restituirò diversi 'HttpActionResults'. Grazie tante. –

+0

in realtà, ci sono casi in cui testare il risultato restituito ha senso. –

risposta

18

È possibile accedere alla stringa restituita mediante il cast del risultato su OkNegotiatedContentResult<string> e l'accesso alla relativa proprietà Content.

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

codice di esempio da: http://www.asp.net/web-api/overview/testing-and-debugging/unit-testing-controllers-in-web-api

+6

@CodeCaster: aggiornato. Ma a volte penso che il codice sia semplice e autoesplicativo. –

+0

Errore Riga "IHttpActionResult result = controller.Get();" dovrebbe essere: "IHttpActionResult actionResult = controller.Get();" –

+0

@Paul Gorbas: grazie, è stato un piccolo errore, è stato risolto ora –

Problemi correlati