Saya mencoba menulis beberapa tes unit untuk ApiController saya dan menghadapi beberapa masalah. Ada metode ekstensi yang bagus yang disebut Request.CreateResponse yang banyak membantu dalam menghasilkan respons.
public HttpResponseMessage Post(Product product)
{
var createdProduct = repo.Add(product);
return this.Request.CreateResponse(HttpStatusCode.Created, createdProduct);
}
Apakah ada cara untuk mengejek CreateResponse tanpa menggunakan tiruan parsial atau penggunaan langsung "new HttpResponseMessage (...)"?
CreateResponse
? Mengapa tidak menegaskan kembaliHttpResponseMessage
Content
danStatusCode
properti bahwa nilai yang benar diatur?Jawaban:
Cara lain untuk menyelesaikan ini adalah dengan melakukan hal berikut:
Jika Anda memutakhirkan ke webapi 5.0, maka Anda harus mengubahnya ke:
Alasan mengapa Anda perlu melakukan ini adalah karena Anda harus
Request
mengisi pada controller jika tidak metode ekstensiRequest
tidak akan berfungsi. Anda juga harus memilikiHttpConfiguration
set pada Permintaan jika tidak routing dan bagian lain dari pipa tidak akan berfungsi dengan benar.sumber
Anda bisa mengatur objek pengontrol untuk testabilitas seperti ini:
Disalin dari posting blog komprehensif Peter Provost di Unit Testing ASP.NET Web API .
sumber
Untuk Web API 2, Anda cukup menambahkan
Seperti itu
Lihat di sini untuk info lebih lanjut.
sumber
WebAPI 1 di sini dengan masalah serupa menggunakan VB.
Saya berhasil tanggapan hibrid di sini untuk membuatnya bekerja sesederhana ini:
Hanya memposting kalau-kalau itu membantu siapa pun.
sumber
Di kelas pengujian Anda, buat turunan dari kelas pengontrol. misalnya
var customerController= new CustomerController();
sumber