Perpustakaan mengejek yang paling populer dan ramah untuk .net
var mock = mock baru <lovethislibrary> (); // WOW! Tidak ada catatan catatan/replay?! :) mock.setup (library => library.downloadexists ("2.0.0.0")) .Returns (true); // Gunakan properti objek pada tiruan untuk mendapatkan referensi ke objek // Menerapkan ilovethislibrary, dan kemudian melatihnya dengan menelepon // metode di atasnya Ilovethislibrary dicintai = mock.object; download bool = lovable.downloadexists ("2.0.0.0"); // Pastikan bahwa metode yang diberikan memang dipanggil dengan nilai yang diharapkan paling banyak sekali mock.verify (library => library.downloadexists ("2.0.0.0"), Times.atmostOnce ());
MOQ juga adalah perpustakaan pertama dan satu -satunya sejauh ini untuk menyediakan Linq untuk diejek, sehingga perilaku yang sama di atas dapat dicapai jauh lebih ringkas:
Ilovethislibrary dicintai = mock.of <lovethislibrary> (l => l.downloadexists ("2.0.0.0") == true); // Latih contoh yang dikembalikan oleh mock.of dengan memanggil metode di atasnya ... download bool = lovable.downloadexists ("2.0.0.0"); // Cukup menegaskan keadaan yang dikembalikan: Assert.true (unduh); // Jika Anda ingin melampaui pengujian negara bagian dan ingin // Verifikasi interaksi tiruan sebagai gantinya ... Mock.get (dicintai) .verify (library => library.downloadexists ("2.0.0.0"));
Anda dapat menganggap Linq untuk mengolok -olok sebagai "dari alam semesta tiruan, beri saya satu yang perilakunya cocok dengan ungkapan ini".
Lihat QuickStart untuk lebih banyak contoh!
MOQ (diucapkan "mock-you" atau hanya "mock") adalah satu-satunya perpustakaan mengejek untuk .NET yang dikembangkan dari awal untuk mengambil keuntungan penuh dari .NET Linq Expression Trees dan Lambda Expressions, yang menjadikannya yang paling produktif, jenis-aman dan jenis Perpustakaan mengejek ramah-refactoring tersedia. Dan itu mendukung antarmuka mengejek serta kelas. API -nya sangat sederhana dan langsung, dan tidak memerlukan pengetahuan atau pengalaman sebelumnya dengan konsep mengejek.
Perpustakaan dibuat terutama untuk pengembang yang saat ini tidak menggunakan perpustakaan mengejek (atau tidak senang dengan kompleksitas beberapa implementasi lainnya), dan yang biasanya secara manual menulis tiruan mereka sendiri (dengan lebih atau kurang "fanciness"). Sebagian besar pengembang dalam situasi ini juga sangat pragmatis dan mematuhi TDD menyatakan (atau klasik). Ini adalah hasil dari perasaan bahwa penghalang masuk dari perpustakaan mengejek lainnya agak tinggi, dan pendekatan yang lebih sederhana, lebih ringan dan elegan dimungkinkan. MOQ mencapai semua ini dengan memanfaatkan sepenuhnya fitur bahasa C# dan VB yang elegan dan kompak yang secara kolektif dikenal sebagai LINQ (mereka tidak hanya untuk pertanyaan, seperti yang disiratkan akronim).
MOQ dirancang untuk menjadi cara yang sangat praktis, tidak mengganggu, dan lurus untuk dengan cepat mengatur dependensi untuk pengujian Anda. Desain API -nya bahkan membantu pengguna pemula untuk jatuh dalam "lubang kesuksesan" dan menghindari penyalahgunaan/penyalahgunaan yang paling umum terjadi.
Ketika itu dikandung, itu adalah satu -satunya perpustakaan mengejek yang bertentangan dengan pendekatan/replay yang digeneralisasi dan agak tidak intuitif (terutama untuk pemula)/replay dari semua perpustakaan lain (dan itu mungkin hal yang baik;)).
Tidak menggunakan catatan/replay juga berarti bahwa mudah untuk memindahkan harapan umum ke metode pengaturan perlengkapan dan bahkan mengganti harapan tersebut saat dibutuhkan dalam tes unit tertentu.
Anda dapat membaca lebih lanjut tentang "mengapa" dan melihat beberapa tangkapan layar yang bagus di blog KZU.
Lihat contoh QuickStart kami untuk merasakan API yang sangat sederhana dan instal dari Nuget.
Baca tentang pengumuman di blog KZU. Dapatkan beberapa latar belakang di status perpustakaan tiruan dari Scott Hanselman.
MOQ awalnya dikembangkan oleh Clarius, Manas dan Instedd.
MOQ menggunakan Castle DynamicProxy secara internal sebagai mekanisme intersepsi untuk memungkinkan mengejek.
MOQ menawarkan fitur -fitur berikut:
Tipped Strong: Tidak ada string untuk harapan, tidak ada nilai pengembalian atau kendala yang diketik objek
Integrasi Intellisense vs Intellisense: Semuanya mendukung penuh vs IntelliSense, dari menetapkan harapan, hingga menentukan argumen panggilan metode, nilai pengembalian, dll.
Tidak ada catatan catatan/replay untuk dipelajari. Cukup buat tiruan Anda, atur, gunakan dan secara opsional memverifikasi panggilan ke sana (Anda tidak boleh memverifikasi tiruan ketika mereka bertindak hanya sebagai stubs, atau ketika Anda melakukan pengujian berbasis negara yang lebih klasik dengan memeriksa nilai yang dikembalikan dari objek yang diuji di bawah pengujian )
Kurva belajar yang sangat rendah sebagai konsekuensi dari tiga poin sebelumnya. Sebagian besar, Anda bahkan tidak perlu membaca dokumentasi.
Kontrol granular atas perilaku tiruan dengan enumerasi mockbehavior sederhana (tidak perlu mempelajari apa perbedaan teoretis antara tiruan, rintisan, palsu, tiruan dinamis, dll.)
Mengejek kedua antarmuka dan kelas
Mengesampingkan ekspektasi: dapat menetapkan ekspektasi default dalam pengaturan perlengkapan, dan mengesampingkan sesuai kebutuhan pada tes
Lulus argumen konstruktor untuk kelas yang diejek
Mencegat dan meningkatkan acara di tiruan
Dukungan intuitif untuk argumen out/ref
Kami sangat menghargai umpan balik apa pun yang mungkin Anda miliki! Jangan ragu untuk berpartisipasi dalam obrolan, atau melaporkan masalah dalam pelacak masalah.
Pelajari lebih lanjut tentang sponsor GitHub