ForgeTotal.js 5
el

Total.js 5

Δοκιμάστε την εφαρμογή με τον ενσωματωμένο εκτελεστή δοκιμών

Total.js 5 · total5@0.0.19 testingci Εκτελέστηκε με το Total.js 5

Το Total.js έχει έναν μικρό εκτελεστή δοκιμών, το total5/test. Ένα αρχείο δοκιμών είναι ένα συνηθισμένο σενάριο Total.js: φορτώνει το framework και τον εκτελεστή, ξεκινά την εφαρμογή και, όταν είναι ready, καταχωρίζει τις δοκιμές του. Το Test.push(name, fn) προσθέτει μια δοκιμή· το fn(next) κάνει τη δουλειά του και καλεί το next() για να συνεχίσει με την επόμενη. Το Test.print(message, error) αναφέρει έναν έλεγχο: περάστε null ως error για επιτυχία (εκτυπώνεται [OK]) ή ένα μήνυμα για αποτυχία (εκτυπώνεται [FAIL] και η διεργασία τερματίζει με κωδικό 1). Το Test.run() εκτελεί τις καταχωρισμένες δοκιμές με τη σειρά και τερματίζει με κωδικό 0 στο τέλος.

Επειδή μια αποτυχία τερματίζει τη διεργασία με μη μηδενικό κωδικό, το αρχείο μπορεί να κληθεί από το npm test και από οποιαδήποτε υπηρεσία CI. Περιμένετε λίγο (περίπου 500 ms) μετά το ready πριν από το πρώτο αίτημα: ένα αίτημα που στέλνεται αμέσως μπορεί ακόμη να πάρει 404. Χρησιμοποιήστε το RESTBuilder (ή το REQUEST) απέναντι στον τοπικό διακομιστή για να δοκιμάσετε διαδρομές και καλέστε τα actions απευθείας με το ACTION().

controllers/sum.js
exports.install = function() {
	ROUTE('GET /sum/{a}/{b}/', sum);
	ROUTE('GET /dir/', dir);
};

function sum($) {
	$.json({ total: +$.params.a + +$.params.b });
}

function dir($) {
	$.json({ dir: PATH.root() });
}
test.js
require('total5');
require('total5/test');

// Another port than the application uses, so both can run
Total.run({ port: 8765, release: false, watcher: false });

ON('ready', function() {

	// A request sent in the same tick as "ready" can still get a 404, so give the routes a moment
	setTimeout(runtests, 500);
});

function runtests() {

	Test.push('The sum route', function(next) {
		RESTBuilder.GET('http://127.0.0.1:8765/sum/2/3/').exec(function(err, response) {
			Test.print('2 + 3 = 5', response && response.total === 5 ? null : 'Expected 5, got ' + JSON.stringify(response));
			next();
		});
	});

	Test.push('Unknown route', function(next) {
		RESTBuilder.GET('http://127.0.0.1:8765/missing/').exec(function(err, response, output) {
			Test.print('/missing/ answers 404', output.status === 404 ? null : 'Expected 404, got ' + output.status);
			next();
		});
	});

	Test.run();
}