Baru-baru ini, saya berpeluang untuk mendalami Early, ejen AI yang direka untuk penjanaan ujian unit automatik. Sebagai seseorang yang kerap bekerja dengan Rangka Kerja TypeScript dan ExpressoTS, saya ingin melihat cara Early boleh menyelaraskan aliran kerja saya. Saya memutuskan untuk menguji sambungan vscode yang mereka bina pada pustaka NPM baharu saya yang saya bangunkan dipanggil @expressots/share.
Perkara pertama yang menarik perhatian saya tentang Awal ialah keupayaannya untuk menjana ujian unit secara automatik untuk pangkalan kod saya yang sedia ada. Daripada membuat ujian dari awal, saya boleh menumpukan pada memperhalusi ujian yang dihasilkan dan meningkatkan keteguhan dan kebolehujian kod saya. Peralihan ini telah mempercepatkan proses pembangunan saya dengan ketara. Aspek menarik lain yang saya perhatikan ialah 83% daripada kod yang dihasilkan saya tidak melakukan sebarang pelarasan, ia berfungsi di luar kotak dan meningkatkan liputan kod saya. Jimat masa saya.
Dalam masa 8.5 jam sahaja, saya berjaya:
Hakikat bahawa saya boleh mencapai semua ini dalam satu hari adalah luar biasa. Senario yang ideal dalam ujian unit ialah lakukannya semasa anda benar-benar membangunkan fungsi anda. Saya melakukannya selepas fakta bahawa saya sudah mempunyai perpustakaan, jadi beberapa pelarasan diperlukan untuk menjadikan kod itu boleh diuji.
Ujian Kes Edge Penjanaan Automatik. Sebagai contoh, ia menghasilkan ujian unit untuk senario yang melibatkan rentetan kosong, walaupun apabila parameter diperlukan:
export function printSuccess(message: string, component: string): void { stdout.write(chalk.green(`${message}:`, chalk.bold(chalk.white(`[${component}] ✔️\n`)))); }
Pada mulanya, saya tidak akan mencipta ujian untuk rentetan kosong dalam fungsi yang begitu mudah. Walau bagaimanapun, pendekatan Early menggalakkan amalan pengaturcaraan defensif, mendorong saya untuk mengendalikan kes kelebihan yang mungkin saya terlepas pandang.
Semasa memperhalusi ujian yang dijana, saya menghadapi masalah jenis tidak padan:
Masalah: jest.fn() mengembalikan mana-mana, tetapi process.exit tidak akan kembali, menyebabkan jenis tidak sepadan dalam TypeScript.
Penyelesaian: Ubah suai olok-olok untuk memadankan tandatangan proses.keluar, memastikan jenis ketepatan.
Penemuan ini mendorong saya untuk melaraskan kod saya untuk keselamatan jenis yang lebih baik, menyerlahkan cara Early boleh membantu mengenal pasti isu halus yang mungkin tidak disedari.
Walaupun pengalaman positif keseluruhannya, saya menghadapi beberapa cabaran yang, jika ditangani, boleh meningkatkan kebolehgunaan Awal:
Menggunakan Jest 29.7
expect(Compiler.loadConfig()).rejects.toThrowError("process.exit() was called with code 1");
// Versi diperbetulkan
export function printSuccess(message: string, component: string): void { stdout.write(chalk.green(`${message}:`, chalk.bold(chalk.white(`[${component}] ✔️\n`)))); }
Pemerhatian: Menjana ujian untuk setiap input yang mungkin, termasuk rentetan kosong, kadangkala boleh berlebihan.
Cadangan: Memperkenalkan pilihan untuk menyesuaikan tahap penjanaan ujian, membenarkan pembangun ikut serta untuk ujian pengaturcaraan defensif mengikut keperluan.
Keterlihatan Keputusan Ujian: Saya terpaksa bertukar antara Awal dan Jest untuk melihat ujian yang lulus atau gagal.
Keadaan Pokok Fail: Hierarki projek dalam Awal runtuh apabila beralih kembali daripada aplikasi lain, memerlukan saya membuka semula folder berulang kali.
Cadangan: Tingkatkan UI untuk memaparkan keputusan ujian dalam Early, mencerminkan struktur Jest. Mengekalkan keadaan pepohon fail juga akan meningkatkan pengalaman pengguna.
Pemerhatian: Menggunakan sebarang jenis dalam olok-olok boleh menyebabkan ketidakpadanan taip dan berkemungkinan menutup pepijat.
Cadangan: Perhalusi penjanaan olok-olok untuk menggunakan tandatangan yang tepat, mempromosikan keselamatan jenis yang lebih baik dan mengurangkan keperluan untuk pembetulan manual.
Secara keseluruhan, pengalaman saya dengan Early sangat positif. Alat ini mempercepatkan proses ujian unit saya dengan ketara, membolehkan saya menumpukan pada menapis ujian daripada menulisnya dari awal. Ia juga menggalakkan saya untuk mempertimbangkan kes tepi dan meningkatkan keteguhan kod saya.
Bidang untuk penambahbaikan agak kecil dan berkisar pada meningkatkan kebolehgunaan dan penyesuaian. Menangani perkara ini akan menjadikan alat ini lebih berkuasa dalam pembangunan perisian.
Terima kasih kepada pasukan Awal atas kerja cemerlang mereka! Saya teruja untuk melihat cara alat ini berkembang dan berbesar hati untuk terus memberikan maklum balas untuk membantu memperhalusinya dengan lebih lanjut.
Atas ialah kandungan terperinci Penjanaan Ujian Unit dengan AI Awal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!