Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Jalankan pengujian unit untuk aplikasi Node.js dari GitHub dengan menggunakan AWS CodeBuild
Thomas Scott dan Jean-Baptiste Guillois, Amazon Web Services
Ringkasan
Pola ini menyediakan contoh kode sumber dan komponen pengujian unit kunci untuk API game Node.js. Ini juga mencakup instruksi untuk menjalankan pengujian unit ini dari GitHub repositori dengan menggunakan AWS CodeBuild, sebagai bagian dari alur kerja integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) Anda.
Pengujian unit adalah proses pengembangan perangkat lunak di mana berbagai bagian aplikasi, yang disebut unit, diuji secara individual dan independen untuk operasi yang benar. Pengujian memvalidasi kualitas kode dan mengkonfirmasi bahwa itu berfungsi seperti yang diharapkan. Pengembang lain juga dapat dengan mudah mendapatkan keakraban dengan basis kode Anda dengan berkonsultasi dengan tes. Tes unit mengurangi waktu refactoring di masa depan, membantu teknisi mempercepat basis kode Anda lebih cepat, dan memberikan kepercayaan pada perilaku yang diharapkan.
Pengujian unit melibatkan pengujian fungsi individual, termasuk fungsi AWS Lambda. Untuk membuat pengujian unit, Anda memerlukan kerangka pengujian dan cara memvalidasi tes (pernyataan). Contoh kode dalam pola ini menggunakan kerangka pengujian Mocha
Untuk informasi selengkapnya tentang pengujian unit dan contoh komponen pengujian, lihat bagian Informasi tambahan.
Prasyarat dan batasan
Akun AWS aktif dengan CodeBuild izin yang benar
GitHub Akun (lihat instruksi untuk mendaftar
) Git (lihat petunjuk instalasi
) Editor kode untuk membuat perubahan dan mendorong kode Anda ke GitHub
Arsitektur
Pola ini mengimplementasikan arsitektur yang ditunjukkan pada diagram berikut.

Alat
Alat
Git
adalah sistem kontrol versi yang dapat Anda gunakan untuk pengembangan kode. AWS CodeBuild adalah layanan integrasi berkelanjutan yang dikelola sepenuhnya yang mengkompilasi kode sumber, menjalankan pengujian, dan menghasilkan paket perangkat lunak yang siap digunakan. Dengan CodeBuild, Anda tidak perlu menyediakan, mengelola, dan menskalakan server build Anda sendiri. CodeBuild menskalakan terus menerus dan memproses beberapa build secara bersamaan, sehingga build Anda tidak dibiarkan menunggu dalam antrian. Anda dapat memulai dengan cepat menggunakan lingkungan build yang dikemas sebelumnya, atau Anda dapat membuat lingkungan build kustom yang menggunakan alat build Anda sendiri. Dengan CodeBuild, Anda dikenakan biaya per menit untuk sumber daya komputasi yang Anda gunakan.
Kode
Kode sumber untuk pola ini tersedia di GitHub, di repositori aplikasi pengujian unit game Sample
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat GitHub repositori Anda sendiri berdasarkan proyek sampel. |
| Pengembang aplikasi, administrator AWS, AWS DevOps |
Buat CodeBuild proyek baru. |
| Pengembang aplikasi, administrator AWS, AWS DevOps |
Mulai membangun. | Pada halaman Review, pilih Start build untuk menjalankan build. | Pengembang aplikasi, administrator AWS, AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat proyek CodeBuild build baru. |
| Pengembang aplikasi, administrator AWS, AWS DevOps |
Mulai membangun. | Pada halaman Review, pilih Start build untuk menjalankan build. | Pengembang aplikasi, administrator AWS, AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Lihat hasil tes. | Di CodeBuild konsol, tinjau hasil pengujian unit dari CodeBuild pekerjaan. Mereka harus cocok dengan hasil yang ditunjukkan di bagian Informasi tambahan. Hasil ini memvalidasi integrasi GitHub repositori dengan. CodeBuild | Pengembang aplikasi, administrator AWS, AWS DevOps |
Terapkan webhook. | Anda sekarang dapat menerapkan webhook, sehingga Anda dapat secara otomatis memulai build setiap kali Anda mendorong perubahan kode ke cabang utama repositori Anda. Untuk instruksi, lihat CodeBuild dokumentasi. | Pengembang aplikasi, administrator AWS, AWS DevOps |
Sumber daya terkait
Contoh aplikasi uji unit game
(GitHub repositori dengan kode sampel) GitHub acara webhook (CodeBuild dokumentasi)
Informasi tambahan
Hasil tes unit
Di CodeBuild konsol, Anda akan melihat hasil pengujian berikut setelah proyek berhasil dibangun.

Contoh komponen uji unit
Bagian ini menjelaskan empat jenis komponen uji yang digunakan dalam pengujian unit: pernyataan, mata-mata, rintisan, dan tiruan. Ini mencakup penjelasan singkat dan contoh kode dari setiap komponen.
Pernyataan
Pernyataan digunakan untuk memverifikasi hasil yang diharapkan. Ini adalah komponen pengujian yang penting karena memvalidasi respons yang diharapkan dari fungsi yang diberikan. Contoh pernyataan berikut memvalidasi bahwa ID yang dikembalikan adalah antara 0 dan 1000 saat menginisialisasi game baru.
const { expect } = require('chai'); const { Game } = require('../src/index'); describe('Game Function Group', () => { it('Check that the Game ID is between 0 and 1000', function() { const game = new Game(); expect(game.id).is.above(0).but.below(1000) }); });
Mata-mata
Mata-mata digunakan untuk mengamati apa yang terjadi ketika suatu fungsi sedang berjalan. Misalnya, Anda mungkin ingin memvalidasi bahwa fungsi telah dipanggil dengan benar. Contoh berikut menunjukkan bahwa metode start dan stop dipanggil pada objek kelas Game.
const { expect } = require('chai'); const { spy } = require('sinon'); const { Game } = require('../src/index'); describe('Game Function Group', () => { it('should verify that the correct function is called', () => { const spyStart = spy(Game.prototype, "start"); const spyStop = spy(Game.prototype, "stop"); const game = new Game(); game.start(); game.stop(); expect(spyStart.called).to.be.true expect(spyStop.called).to.be.true }); });
Rintisan
Sebuah rintisan digunakan untuk mengganti respons default fungsi. Ini sangat berguna ketika fungsi membuat permintaan eksternal, karena Anda ingin menghindari membuat permintaan eksternal dari pengujian unit. (Permintaan eksternal lebih cocok untuk pengujian integrasi, yang secara fisik dapat menguji permintaan antara komponen yang berbeda.) Dalam contoh berikut, sebuah rintisan memaksa ID kembali dari fungsi getID.
const { expect } = require('chai'); const {.stub } = require('sinon'); const { Game } = require('../src/index'); describe('Game Function Group', () => { it('Check that the Game ID is between 0 and 1000', function() { let generateIdStub = stub(Game.prototype, 'getId').returns(999999); const game = new Game(); expect(game.getId).is.equal(999999); generateIdStub.restore(); }); });
Mengolok-olok
Mock adalah metode palsu yang memiliki perilaku yang telah diprogram sebelumnya untuk menguji skenario yang berbeda. Mock dapat dianggap sebagai bentuk rintisan yang diperluas dan dapat melakukan banyak tugas secara bersamaan. Dalam contoh berikut, tiruan digunakan untuk memvalidasi tiga skenario:
Fungsi ini disebut
Fungsi disebut dengan argumen
Fungsi mengembalikan bilangan bulat 9
const { expect } = require('chai'); const {.mock } = require('sinon'); const { Game } = require('../src/index'); describe('Game Function Group', () => { it('Check that the Game ID is between 0 and 1000', function() { let mock = mock(Game.prototype).expects('getId').withArgs().returns(9); const game = new Game(); const id = get.getId(); mock.verify(); expect(id).is.equal(9); }); });