Memperbarui:
Mocha adalah yang terbaik menurut saya.
Apa pengalaman dengan kerangka kerja ini?
Saya bermain dengan expresso yang merupakan kerangka pengujian yang cukup keren yang juga memiliki cakupan uji. Ini telah dibuat oleh TJ Holowaychuk yang juga pencipta Express.js (sangat cepat (dan kecil) kerangka kerja web JavaScript sisi server dibangun di atas Node.js dan Connect). Baru-baru ini saya melihat bahwa dia juga memiliki perpustakaan keren bernama should.js yang dapat digunakan bersama dengan Expresso untuk pengalaman pengujian yang lebih baik.
Tentunya, kemampuan untuk berjalan di browser akan menjadi bonus besar
Saya tidak percaya itu bisa berjalan di browser, tetapi saya juga tidak mengerti mengapa Anda ingin menjalankannya di dalam browser?
tapi saya terutama tertarik pada Node.js. Sesuatu dengan kemiringan yang sangat tidak sinkron akan bagus.
Kutipan dari expresso:
Argumen yang diteruskan ke setiap panggilan balik adalah beforeExit, yang biasanya digunakan untuk menyatakan bahwa panggilan balik telah dipanggil.
Anda dapat menggunakan beforeExit untuk menguji fungsi asinkron.
TIP: Ikuti TJ Holowaychuk di GitHub , karena ia menciptakan kode sumber terbuka yang sangat baik.
Saya menggunakan VowsJS yang mudah digunakan async BDD framework (Behavior Driven Development) dan menyelesaikan pekerjaan.
Dari apa yang saya lihat akhir-akhir ini itulah yang banyak dipilih untuk menguji modul NPM mereka, jadi saya percaya sejauh ini adalah yang terbaik untuk digunakan.
Beberapa kerangka kerja pengujian populer yang dapat digunakan dengan NodeJS juga adalah mereka:
Anda juga dapat melihat daftar kerangka kerja pengujian JavaScript di sini
Lebih sedikit lib yang dapat membantu Anda menulis kode yang lebih baik adalah:
Ada juga Bamboo CI Server oleh Atlassian yang mengotomatiskan pembuatan dan pengujian. Ini adalah paket untuk Apache / Tomcat (yang sux karena menggunakan Java dan yang membuatnya sangat berat) juga tidak gratis tetapi memiliki lisensi pemula yang biaya $ 10 jadi saya percaya itu terjangkau. Ini adalah yang paling unggulan dari semua server CI yang saya temukan sejauh ini dan mendukung semua tes unit yang mendukung xUnit yang berarti Anda dapat menjalankan build / tes untuk bahasa apa pun dengan Bamboo.
Opsi lain untuk CI dengan NodeJS adalah Travis yang banyak orang gunakan untuk proyek open source mereka, seperti dikatakan Layanan integrasi berkesinambungan yang di-host untuk komunitas open source.
Ada juga diskusi grup google dengan topik Continuous Integration for Node JS Projects .
sumber
Berdasarkan komentar penanya di atas, saya mencoba sumpah , dan itu memecahkan banyak masalah yang saya alami dengan pengujian async saya. Kemampuannya untuk mencampur pengujian serial dan paralel sangat mengagumkan.
Pastikan Anda membaca dokumen pedoman dengan seksama, tetapi begitu Anda terbiasa, itu fleksibel, kuat, dan menghasilkan hasil yang bagus dan bersih.
UPDATE: Saya juga akan mendorong orang untuk memeriksa harus untuk penegasan mereka. Hal ini memungkinkan untuk menegaskan sangat fleksibel, sangat mudah dibaca, dan kompatibel dengan Expresso dan Sumpah, dan mungkin sebagian besar kerangka kerja pengujian lainnya.
(Saya memposting ini sebagai jawaban terpisah untuk berjaga-jaga kalau-kalau orang tidak melihat komentar pada jawaban Alfred.)
UPDATE 1/7/2015: Untuk apa nilainya, saya sejak beralih dari Sumpah ke Mocha, dan dari Harus ke Chai. Mocha memiliki dukungan yang jauh lebih baik sekarang untuk pengujian asinkron menggunakan janji, dan Chai memungkinkan untuk beberapa opsi menegaskan yang fleksibel, termasuk
expect
api, bagi mereka yang tidak suka memodifikasi prototipe objek.sumber
should
Tacks properti non-enumerable bernamashould
keObject
prototipe, yang berarti semua nilai / objek yang Anda hadapi terlihat sedikit berbeda pada waktu pengujian dan pada waktu produksi. Meskipun ini mungkin 'hanya berfungsi' dalam banyak kasus, pada prinsipnya ide buruk untuk memodifikasi prototipe bawaan; melakukannya hanya selama pengujian terasa salah. Ini semua hanya dilakukan agar mereka dapat memiliki sintaks yang bagus.should
tanpa memanjangObject.prototype
(cukup panggilrequire('should').noConflict()
dan gunakan should.js sebagai alternatif yang diharapkan.Saya sudah mulai menggunakan Jasmine untuk pengujian JavaScript saya secara khusus karena kecil dan berjalan di browser dan node. Ini juga memiliki API pelaporan dan pencocokan yang sangat solid sehingga mudah untuk diintegrasikan dengan alat lain di masa mendatang. Memiliki kerangka kerja mengejek juga berguna karena sering salah satu hal pertama yang saya tambahkan ketika saya menggunakan qunit untuk TDD di browser.
sumber
Jika Anda ingin kerangka BDD yang benar maka mungkin pertimbangkan Yadda . Terintegrasi dengan mocha, melati, nodeunit, qunit, zombie dan casperjs, untuk mendukung file fitur, misalnya
sumber
Saya telah menggunakan nodeunit dan kemampuannya untuk bekerja dengan fungsi-fungsi async cukup mudah.
Ada langkah-langkah bagus yang bisa membuat Anda siap-pakai dengan nodeunit di blog-nya .
[ Catatan: API telah berubah sejak blogpost -
setUp(callback)
dantearDown(callback)
keduanya menerima panggilan balik sebagai argumen, yang harus Anda panggil saat setup / teardown Anda selesai. ]sumber