Próbuję napisać kilka testów jednostkowych dla mojego ApiController i napotkałem pewne problemy. Istnieje fajna metoda rozszerzenia o nazwie Request.CreateResponse, która bardzo pomaga w generowaniu odpowiedzi.
public HttpResponseMessage Post(Product product)
{
var createdProduct = repo.Add(product);
return this.Request.CreateResponse(HttpStatusCode.Created, createdProduct);
}
Czy jest jakiś sposób na mockowanie CreateResponse bez używania częściowych mocków lub bezpośredniego używania "nowego HttpResponseMessage (...)"?
CreateResponse
? Dlaczego nie potwierdzić na zwróconychHttpResponseMessage
Content
iStatusCode
właściwościach, że są ustawione prawidłowe wartości?Odpowiedzi:
Innym sposobem rozwiązania tego problemu jest wykonanie następujących czynności:
Jeśli aktualizujesz do Webapi 5.0, musisz zmienić to na:
Powodem, dla którego musisz to zrobić, jest to, że musisz
Request
wypełnić kontroler, w przeciwnym razie metody rozszerzająceRequest
nie będą działać. Musisz również miećHttpConfiguration
zestaw na żądanie, w przeciwnym razie routing i inne części potoku nie będą działać poprawnie.źródło
Możesz ustawić obiekt kontrolera na testowalność w następujący sposób:
Skopiowano z obszernego wpisu w blogu Petera Provosta na temat testów jednostkowych ASP.NET Web API .
źródło
W przypadku interfejsu API sieci Web 2 możesz po prostu dodać
Tak, tak
Więcej informacji znajdziesz tutaj .
źródło
WebAPI 1 z podobnym problemem przy użyciu VB.
Udało mi się tutaj uzyskać hybrydowe odpowiedzi, aby to działało tak prosto, jak to:
Po prostu publikuj na wypadek, gdyby to komuś pomogło.
źródło
W swojej klasie testowej utwórz wystąpienie klasy kontrolera. na przykład
var customerController= new CustomerController();
źródło