Di tempat kerja, kami menulis banyak logika bisnis yang sering berubah di JS (startup). Bahkan terlalu banyak. Dan saya ingin menguji semua ini dari kebiasaan lama, tapi entah bagaimana lebih cepat, sehingga tes tidak mengganggu govnokod ketika dibutuhkan, dan struktur modul tidak terlalu khusus untuk pengujian. Pada titik tertentu, muncul pemikiran bahwa itu juga bisa otomatis entah bagaimana dengan bantuan plug-in babel sederhana, sehingga sebagai permulaan akan menghasilkan semua variabel pribadi dan metode dalam lingkungan pengujian, tetapi tidak akan menyentuhnya dalam produksi. Ternyata cukup sederhana dan menyenangkan. Inilah bagaimana Introscope muncul, yang dengannya kita sekarang menguji semuanya lebih atau kurang rumit.
Setelah menyerahkan proyek, saya terganggu selama beberapa bulan untuk meningkatkan penyebaran dan pemantauan, istirahat, Habr dihargai, dan ketika saya perlu menguji sesuatu lagi, saya langsung senang dengan alat saya sendiri! Ini tidak sering terjadi pada saya. Lebih tepatnya, itu tidak pernah terjadi. Jadi, saya pikir masalahnya bekerja. Saya harap Anda berguna juga.
Secara singkat, apa yang bisa dilakukannya?
- Membungkus seluruh modul dalam fungsi pabrik sehingga Anda dapat membuat modul baru sebanyak mungkin selama pengujian yang Anda butuhkan. Ini menghilangkan kebutuhan untuk melakukan unmock.
- Karena modul dibungkus, tulza tahu persis variabel mana yang diimpor modul dan dapat menghasilkan moki berdasarkan tipenya. Ini bekerja sangat baik untuk gaya yang kurang lebih fungsional.
- Ia mampu mencatat panggilan dan argumen ke fungsi-fungsi dari modul-modul eksternal dan memasukkan semuanya ke dalam sebuah log, yang kemudian diserialisasi dengan indah untuk snapshot (jika Anda menggunakan Jest, semuanya akan segera dimulai).
- Fitur pembunuh: dapat menyimpan hasil memanggil fungsi eksternal dan menggunakannya untuk pengujian lebih lanjut. Sangat nyaman saat menguji permintaan untuk layanan eksternal yang kami gunakan untuk mengemudi ke moki dengan tangan kami.
- Dalam kombinasi dengan Jest, tes diperbarui dengan menekan satu tombol U (saya tidak bercanda), yang memperbarui snapshot. Pendekatan ujian emas dengan segala kemuliaan.
- Bekerja dalam produksi selama hampir setahun.
Hasilnya
Tes mulai ditulis oleh orang-orang yang sebelumnya bahkan tidak ingin mendengarnya, karena Anda hanya perlu memanggil fungsi dengan parameter yang diperlukan dan menyimpan log dari apa yang terjadi dalam fungsi ini dengan satu tombol. Saya hanya ingin menguji sesuatu yang lain ...
Tautan: Introscope (ada juga screencasts gif!). Saya akan sangat senang untuk kritik konstruktif dan tautan ke hal yang sama, tetapi melakukan jauh lebih baik: D
