Mencoba membuat URLHelper untuk tujuan pengujian dengan bantuan ActionContext() melempar NullReferenceException.
Langkah-langkah untuk mereproduksi perilaku:
Melempar Pesan: System.NullReferenceException : Referensi objek tidak disetel ke instance objek.
Laporan bug juga dapat ditemukan di StackOverflow:
https://stackoverflow.com/questions/54199103/trying-to-test-a-controller-with-a-urlhelper
Apa yang terjadi di sini adalah bahwa UrlHelper
mencoba mengakses properti RouteData
dari ActionContext
untuk memeriksa apakah ia memiliki nilai sehingga menyebabkan pengecualian. Untuk memperbaikinya, Anda dapat melakukan:
var url = new UrlHelper( new ActionContext{ RouteData = new RouteData() } );
Konstruktor spesifik itu didokumentasikan untuk digunakan untuk pengujian unit, lebih khusus lagi ketika ActionContext
hanya perlu diteruskan, tetapi tidak digunakan oleh kode yang dikonsumsi. Menyiapkannya seperti yang disarankan @navelDirt akan menjadi cara yang harus dilakukan.
Lebih jauh, jika Anda bermaksud menguji unit jika sepotong kode menghasilkan url tertentu, Anda akan lebih berhasil menggunakan stub \ mock IUrlHelper
. Jika Anda perlu memverifikasi hasil yang sebenarnya, saya sangat menyarankan untuk menulis tes integrasi
Terima kasih banyak @navelDirt dan @pranavkm.
Saya bingung karena di inti 1.1 itu berfungsi tanpa mengatur RouteData, tetapi beralih ke 2.2 itu macet. Itu sebabnya saya pikir itu bug ... maaf atas ketidaknyamanan ini.