Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Führen Sie Komponententests für eine Node.js -Anwendung aus, GitHub indem Sie AWS CodeBuild
Erstellt von Thomas Scott (AWS) und Jean-Baptiste Guillois () AWS
Übersicht
Dieses Muster enthält Beispielquellcode und wichtige Unit-Test-Komponenten für ein Node.js -Spiel. API Es enthält auch Anweisungen zum Ausführen dieser Komponententests von einem GitHub Repository aus AWS CodeBuild, indem Sie sie als Teil Ihres CI/CD-Workflows (Continuous Integration and Continuous Delivery) verwenden.
Unit-Tests sind ein Softwareentwicklungsprozess, bei dem verschiedene Teile einer Anwendung, sogenannte Units, einzeln und unabhängig voneinander auf ihren korrekten Betrieb getestet werden. Tests validieren die Qualität des Codes und bestätigen, dass er erwartungsgemäß funktioniert. Andere Entwickler können sich auch leicht mit Ihrer Codebasis vertraut machen, indem sie die Tests konsultieren. Unit-Tests reduzieren die future Refactoring-Zeit, helfen Ingenieuren dabei, sich schneller mit Ihrer Codebasis vertraut zu machen, und schaffen Vertrauen in das erwartete Verhalten.
Beim Komponententest werden einzelne Funktionen getestet, einschließlich AWS Lambda-Funktionen. Um Unit-Tests zu erstellen, benötigen Sie ein Test-Framework und eine Methode zur Validierung von Tests (Assertions). Die Codebeispiele in diesem Muster verwenden das Mocha-Testframework
Weitere Informationen zu Komponententests und Beispiele für Testkomponenten finden Sie im Abschnitt Zusätzliche Informationen.
Voraussetzungen und Einschränkungen
Ein aktives AWS Konto mit den richtigen CodeBuild Berechtigungen
Ein GitHub Konto (siehe Anweisungen zur Registrierung
) Git (siehe Installationsanleitung
) Ein Code-Editor, in den Sie Änderungen vornehmen und Ihren Code hochladen können GitHub
Architektur
Dieses Muster implementiert die Architektur, die im folgenden Diagramm dargestellt ist.

Tools
Tools
Git
ist ein Versionskontrollsystem, das Sie für die Codeentwicklung verwenden können. AWS CodeBuild ist ein vollständig verwalteter Service für die kontinuierliche Integration, der Quellcode kompiliert, Tests ausführt und Softwarepakete generiert, die direkt bereitgestellt werden können. Damit CodeBuild müssen Sie Ihre eigenen Build-Server nicht bereitstellen, verwalten und skalieren. CodeBuild skaliert kontinuierlich und verarbeitet mehrere Builds gleichzeitig, sodass Ihre Builds nicht in einer Warteschlange warten müssen. Mit den vorkonfigurierten Build-Umgebungen gelingt der Einstieg leicht. Jedoch können Sie auch benutzerdefinierte Build-Umgebungen mit Ihren eigenen Entwicklungstools erstellen. Mit CodeBuild werden Ihnen die von Ihnen genutzten Rechenressourcen minutengenau berechnet.
Code
Der Quellcode für dieses Muster ist im Repository der Beispielanwendung Game Unit Test
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie Ihr eigenes GitHub Repository auf der Grundlage des Beispielprojekts. |
| App-Entwickler, AWS Administrator, AWS DevOps |
Erstellen Sie ein neues CodeBuild Projekt. |
| App-Entwickler, AWS Administrator, AWS DevOps |
Starte den Build. | Klicken Sie auf der Seite Review (Überprüfen) auf Start build (Build starten), um den Build auszuführen. | App-Entwickler, AWS Administrator, AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie ein neues CodeBuild Build-Projekt. |
| App-Entwickler, AWS Administrator, AWS DevOps |
Starte den Build. | Klicken Sie auf der Seite Review (Überprüfen) auf Start build (Build starten), um den Build auszuführen. | App-Entwickler, AWS Administrator, AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Testergebnisse anzeigen. | Überprüfen Sie in der CodeBuild Konsole die Unit-Testergebnisse des CodeBuild Jobs. Sie sollten mit den Ergebnissen im Abschnitt Zusätzliche Informationen übereinstimmen. Diese Ergebnisse validieren die GitHub Repository-Integration mit CodeBuild. | App-Entwickler, AWS Administrator, AWS DevOps |
Wenden Sie einen Webhook an. | Sie können jetzt einen Webhook anwenden, sodass Sie automatisch einen Build starten können, wenn Sie Codeänderungen in den Hauptzweig Ihres Repositorys übertragen. Anweisungen finden Sie in der CodeBuild Dokumentation. | App-Entwickler, AWS Administrator, AWS DevOps |
Zugehörige Ressourcen
Beispiel für eine Game-Unit-Testanwendung
(GitHub Repository mit Beispielcode) GitHub Webhook-Ereignisse (CodeBuild Dokumentation)
Ein neues Repository erstellen
(GitHub Dokumentation)
Zusätzliche Informationen
Ergebnisse des Komponententests
In der CodeBuild Konsole sollten Sie die folgenden Testergebnisse sehen, nachdem das Projekt erfolgreich erstellt wurde.

Beispiele für Komponententests
In diesem Abschnitt werden die vier Arten von Testkomponenten beschrieben, die bei Unit-Tests verwendet werden: Assertions, Spies, Stubs und Mocks. Er enthält eine kurze Erklärung und ein Codebeispiel für jede Komponente.
Behauptungen
Eine Behauptung wird verwendet, um ein erwartetes Ergebnis zu verifizieren. Dies ist eine wichtige Testkomponente, da sie die erwartete Antwort einer bestimmten Funktion validiert. Die folgende Beispiel-Assertion bestätigt, dass die zurückgegebene ID bei der Initialisierung eines neuen Spiels zwischen 0 und 1000 liegt.
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)
});
});
Spione
Ein Spion wird verwendet, um zu beobachten, was passiert, wenn eine Funktion ausgeführt wird. Beispielsweise möchten Sie möglicherweise überprüfen, ob die Funktion korrekt aufgerufen wurde. Das folgende Beispiel zeigt, dass Start- und Stop-Methoden für ein Game-Klassenobjekt aufgerufen werden.
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
});
});
Stubs
Ein Stub wird verwendet, um die Standardantwort einer Funktion zu überschreiben. Dies ist besonders nützlich, wenn die Funktion eine externe Anfrage stellt, da Sie vermeiden möchten, externe Anfragen aus Komponententests zu stellen. (Externe Anfragen eignen sich besser für Integrationstests, mit denen Anfragen zwischen verschiedenen Komponenten physisch getestet werden können.) Im folgenden Beispiel erzwingt ein Stub eine Rückgabe-ID von der getIdFunktion.
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();
});
});
Verspottet
Ein Mock ist eine gefälschte Methode mit einem vorprogrammierten Verhalten zum Testen verschiedener Szenarien. Ein Mock kann als erweiterte Form eines Stubs betrachtet werden und kann mehrere Aufgaben gleichzeitig ausführen. Im folgenden Beispiel wird ein Mock verwendet, um drei Szenarien zu validieren:
Die Funktion wird aufgerufen
Die Funktion wird mit Argumenten aufgerufen
Die Funktion gibt die Ganzzahl 9 zurück
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);
});
});