Jika Protractor mengganti Angular Scenario Runner untuk pengujian E2E, apakah itu berarti saya masih dapat menggunakannya dengan Karma sebagai framework pengujian E2E saya?
javascript
angularjs
testing
protractor
karma-runner
prinsip holografik
sumber
sumber
Jawaban:
Tidak direkomendasikan oleh pengelola busur derajat saat ini:
Dan
sumber
MEMPERBARUI. Berikut adalah paket sederhana yang saya buat untuk menambahkan penyiapan Karma minimal ke proyek apa pun dengan satu perintah
npm install min-karma
.Saya ingin mengklarifikasi beberapa kemungkinan kesalahpahaman tentang Karma dan Busur derajat . FAQ Karma sebenarnya mengacu pada Adaptor untuk Angular's Scenario Runner , yang, bagaimanapun, tampaknya ditinggalkan, dengan Busur derajat yang direkomendasikan sebagai gantinya.
Karma
Karma adalah runner pengujian yang akan menjalankan file JavaScript yang ditentukan dalam file konfigurasi Anda secara eksplisit atau menggunakan node-globs . (Untuk template eksternal non-JavaScript , Angular's Unit Testing Guide merekomendasikan penggunaan preprocessor Karma html untuk mengkompilasinya ke dalam JavaScript terlebih dahulu.)
Ini bisa berupa semua file sumber Anda, beberapa di antaranya, beberapa di antaranya ditambah beberapa file tambahan atau file yang tidak relevan dengan proyek Anda, hanya menyediakan beberapa konfigurasi tambahan - sebut saja! Anda dapat memiliki beberapa file konfigurasi karma untuk tujuan yang berbeda, yang dapat Anda jalankan secara paralel atau satu per satu. Setiap proses karma meluncurkan perambannya sendiri (ini saat ini tersedia) .
Ini fitur dari Karma untuk menjalankan hanya set file adalah apa yang membuatnya sempurna untuk tes cepat berjalan di latar belakang pada setiap file mengedit sumber, dan mendapatkan umpan balik segera, yang brilian! Satu-satunya negatif adalah pelaporan kesalahan "berisik" yang mudah-mudahan akan meningkat!
Karma tidak hanya untuk tes unit
Uji unit adalah untuk satu unit kode sumber Anda. Dalam kasus Angular, unit tipikal adalah Komponen Angular (
Service, Factory, Provider, Controller, Filter, Directive
dll). Ingatlah untuk menjaga AndaControllers
tipis, sehingga terlalu banyak unit test untuk latters adalah bendera merah .Dalam pengujian unit , setiap unit kode lainnya, di mana unit ini bergantung (disebut dependensi unit) tidak boleh diuji pada saat yang sama. Sebaliknya mereka harus "diejek", misalnya diganti dengan sesuatu yang sederhana seperti contoh dummy. Angular memberikan dukungan lingkungan tiruan yang bagus . Idealnya Anda ingin melihat semua tiruan itu langsung di dalam pengujian Anda, jadi Anda tidak perlu bertanya-tanya dari mana semua dependensi itu berasal.
Karma juga berguna untuk Tes Integrasi , di mana sekelompok unit kode sumber diuji bersama, dengan hanya beberapa dependensinya yang diejek. Penting untuk diingat bahwa setiap dependensi secara default disediakan dari modul kode sumber Anda (selama modul tersebut dimasukkan secara langsung ke dalam pengujian Anda , atau merupakan dependensi dari modul lain yang dimasukkan (dalam hal ini Anda tidak perlu memasukkannya) , tetapi tidak ada salahnya untuk melakukannya). Dependensi yang dibuat-buat akan menimpa yang disediakan.
Berlari Cepat dan Sering adalah fitur utama Karma . Ini berarti Anda ingin menghindari permintaan server apa pun, kueri database apa pun, apa pun yang dapat memakan waktu lebih lama dari sepersekian detik. ( Kalau tidak, TIDAK akan cepat! ) Proses panjang itu adalah yang ingin Anda tiru . Ini juga menjelaskan mengapa praktik yang buruk untuk meletakkan layanan mentah tingkat rendah seperti
$http
langsung di dalam pengontrol Anda atau unit logika bisnis yang rumit. Dengan menggabungkan layanan komunikasi luar tingkat rendah ke dalam layanan khusus yang lebih kecil, Anda membuatnya lebih mudah untuk "mengejek mereka".Apa yang tidak dilakukan Karma adalah menjalankan situs Anda apa adanya, yang merupakan pengujian End-to-End (E2E). Pada prinsipnya, Anda dapat menggunakan metode internal Angular untuk membuat ulang situs atau bagiannya. Yang mana, untuk potongan kecil, bisa berguna, dan cara cepat misalnya untuk menguji arahan.
Namun, ini bukan cara yang disarankan untuk memasukkan kode yang rumit ke dalam pengujian Anda. Semakin sering Anda melakukannya, semakin besar kemungkinan Anda membuat kesalahan dalam kode itu daripada apa yang sebenarnya Anda uji.
Itulah mengapa saya pribadi tidak menyukai metode pengujian rumit yang sering disebutkan menggunakan metode tingkat rendah seperti
$http
. Ini bekerja lebih bersih untuk mengisolasi referensi apa pun ke metode tingkat rendah ke dalam metode khusus Anda sendiri, yang tanggung jawab tunggal adalah membuat permintaan http. Metode khusus ini harus dapat bekerja dengan backend asli , bukan yang palsu! Yang dapat Anda uji dengan mudah - secara manual atau bahkan baik-baik saja dengan Karma yang berjalan dengan konfigurasi khusus lainnya , selama Anda tidak mencampur konfigurasi itu dengan yang biasanya digunakan untuk menjalankan Karmateratur dan cepat. Sekarang, setelah layanan kecil khusus Anda diuji, Anda dapat dengan aman dan mudah mengejeknya untuk menguji logika Anda yang lain dan memasukkan tes ini ke dalam pengaturan Karma reguler Anda .Untuk meringkas. Gunakan Karma untuk menjalankan kumpulan file JavaScript apa pun. Ini (harus) cepat. Anda tidak melihat aplikasi lengkap Anda, jadi tidak dapat menguji hasil akhir secara efektif dan andal. Apakah saya akan menjalankannya dengan Busur derajat ? Mengapa saya harus? Menjalankan Busur Derajat akan memperlambat tes saya, mengalahkan tujuan Karma . Mudah untuk menjalankan busur derajat secara terpisah.
Busur derajat
Busur derajat adalah:
Jadi Busur derajat melakukan persis apa yang tidak dilakukan Karma - jalankan aplikasi akhir Anda yang sebenarnya. Ini mengungkapkan kekuatan dan keterbatasannya:
Menjalankan aplikasi lengkap adalah satu-satunya tes akhir yang andal agar aplikasi Anda berfungsi seperti yang diharapkan. Anda dapat menulis skenario cerita pengguna lengkap dan mengujinya!
Namun , lebih sulit untuk melacak kesalahan tanpa mengisolasi unit individu dari kode sumber Anda. Inilah mengapa Anda masih membutuhkan Karma untuk menguji kode JavaScript Anda terlebih dahulu.
Sekarang apakah saya ingin menjalankan Busur Derajat dengan Karma ? Saya pasti dapat menjalankannya di jendela terminal terpisah, secara paralel. Pada prinsipnya, saya dapat meminta mereka membagikan file pengujian jika perlu, tetapi biasanya saya lebih suka tidak. Mengapa? Karena saya ingin membuat tes saya kecil dengan satu tujuan khusus.
Satu-satunya pengecualian adalah file yang menentukan makro pengujian yang berguna untuk kedua pelari. Namun, ini bukan file pengujian, tetapi file definisi makro .
Selain itu, saya menyukai pemisahan yang jelas antara ujian saya. Itu harus dijalankan secara sering dan cepat, dan untuk aplikasi lengkap. Itu membuat pemisahan yang jelas antara saat menggunakan Karma dan saat Busur derajat .
sumber
Karma adalah pelari tes yang disediakan oleh tim Angular, Karma akan menjalankan tes Anda di beberapa browser yang akan memastikan bahwa aplikasi kami kompatibel di semua browser. Unit Test untuk angular js dapat digunakan karma + melati
Jasmine adalah kerangka kerja pengujian unit javascript dan akan memberi kami utilitas untuk menguji aplikasi kami. Ini bekerja paling baik pada kerangka Angular dan dengan demikian, pilihan kami "alat pengujian unit otomatis". https://github.com/shahing/testingangularjs
Dan Busur derajat adalah kerangka pengujian ujung ke ujung untuk aplikasi Angular dan AngularJS. Busur derajat menjalankan tes terhadap aplikasi Anda yang berjalan di browser nyata, browser tanpa head, pengujian lintas browser dan dapat dihosting di saucelabs.
https://github.com/shahing/Protractor-Web-Automation
sumber
Ya, Anda bisa menggunakan karma dan busur derajat bersama-sama. Karma digunakan untuk pengujian unit komponen yang Anda buat menggunakan perintah angular. Anda dapat menguji komponen tersebut menggunakan karma. Busur derajat digunakan untuk pengujian ujung ke ujung. Ini terutama digunakan untuk pengujian UI.
sumber