1. Code
  2. JavaScript

Schnelle und einfache JavaScript-Tests mit "Assert"

Scroll to top

German (Deutsch) translation by Jean-Étienne (you can also view the original English article)

Vor Jahren lernte ich von John Resig eine täuschend einfache "assert"-Funktion, mit der man sein JavaScript testen kann. Es ist erstaunlich, dass dieser Code mit nur fünf oder sechs Zeilen ein hohes Maß an Leistung und Kontrolle über Ihren Code beim Testen bietet. Ich zeige Ihnen im heutigen Video-Kurztipp, wie Sie ihn verwenden können.


Vollständiger Screencast

Please accept preferences cookies to load this content.

“Assert” Code

1
 
2
<!DOCTYPE HTML> 
3
<html lang="en-US"> 
4
<head> 
5
	<meta charset="UTF-8"> 
6
	<title>Easy JavaScript Testing </title> 
7
	<style> 
8
		.pass:before { 
9
			content: 'PASS: '; 
10
			color:  blue; 
11
			font-weight: bold; 
12
		} 
13
 
14
		.fail:before { 
15
			content: 'FAIL: '; 
16
			color: red; 
17
			font-weight: bold; 
18
 
19
		} 
20
	</style> 
21
</head> 
22
<body> 
23
 
24
<ul id="output"></ul> 
25
 
26
<script> 
27
var output = document.getElementById('output'); 
28
 
29
function assert( outcome, description ) { 
30
	var li = document.createElement('li'); 
31
	li.className = outcome ? 'pass' : 'fail'; 
32
	li.appendChild( document.createTextNode( description ) ); 
33
 
34
	output.appendChild(li); 
35
}; 
36
</script>

Das ist alles, was Sie für die meisten grundlegenden Tests brauchen! Die assert-Funktion nimmt zwei Parameter entgegen:

  1. Ergebnis: Ein boolescher Wert, der angibt, ob der Test bestanden wurde oder nicht
  2. Beschreibung: Eine kurze Beschreibung Ihres Tests.

Die assert-Funktion erstellt dann einfach ein Listenelement, wendet die Klasse "pass" oder "fail" an, je nachdem, ob der Test wahr oder falsch war, und fügt die Beschreibung an das Listenelement an. Schließlich wird dieser Codeblock der Seite hinzugefügt. Es ist wahnsinnig einfach, funktioniert aber perfekt.


Test 1: Ihr erstes Beispiel

1
 
2
function add(num1, num2) { 
3
	return num1 + num2; 
4
} 
5
 
6
var result = add(5, 20); 
7
assert( result == 24, 'Checking the add function'); 
8
 
9
// OR 
10
assert( add( 5, 20 ) == 24, 'Checking the add function');

Test 2: Verschlüsse

1
 
2
var someArray = [1,2,3,4,5], 
3
	len = someArray.length, 
4
	i = 0; 
5
 
6
var count = 0; 
7
 
8
for ( ; i < len; i++ ) { 
9
	setTimeout(function() { 
10
		assert( count++ === i, 'Checking the value of: ' + i ); 
11
	}, i * 300); 
12
}
Oje! Was ist passiert?

Dies ist ein häufiges Problem, und die Lösung besteht darin, eine Schließung zu implementieren, so dass wir uns den Wert von "i" merken können. Andernfalls wird der Code, wie wir oben festgestellt haben, nur den letzten Wert in der Sequenz wiedergeben: 5.

1
 
2
var someArray = [1,2,3,4,5], 
3
	len = someArray.length, 
4
	i = 0; 
5
 
6
var count = 0; 
7
 
8
for ( ; i < len; i++ ) (function(i) { 
9
	setTimeout(function() { 
10
		assert( count++ === i, 'Checking the value of: ' + i ); 
11
	}, i * 300); 
12
})(i);

Schlussfolgerung

Auf den ersten Blick mag es so aussehen, als ob nur große JavaScript-Bibliotheken und dergleichen eine Form des Testens erfordern; das ist jedoch weit von der Wahrheit entfernt. Wie wir gezeigt haben, kann uns sogar eine einfache Funktion wie Resigs "assert" stundenlange Fehlersuche ersparen! Was verwenden Sie persönlich, um Ihren Code zu testen?