Η φιλοξενία ενός API φέρει ευθύνη για να βεβαιωθείτε ότι λειτουργεί. Δεν υπάρχει καλύτερος ή ευκολότερος τρόπος για να το κάνετε από την αυτοματοποιημένη δοκιμή με ένα εργαλείο όπως το Mocha.
Η σύγχρονη ανάπτυξη λογισμικού κάνει μεγάλη χρήση των API. Λειτουργούν ως κρίσιμος σύνδεσμος μεταξύ εφαρμογών από την πλευρά του πελάτη και εφαρμογών υποστήριξης, καθώς και μεταξύ διαφορετικών εσωτερικών ή εξωτερικών εφαρμογών.
Τα API επιτρέπουν την ομαλή επικοινωνία και ανταλλαγή δεδομένων, επιτρέποντας στα στοιχεία λογισμικού να αλληλεπιδρούν απρόσκοπτα μεταξύ τους. Η διασφάλιση της αξιοπιστίας, της λειτουργικότητας και της απόδοσης αυτών των API είναι υψίστης σημασίας για την παροχή μιας απρόσκοπτης εμπειρίας χρήστη και τη διατήρηση της συνολικής ακεραιότητας του συστήματος.
Επομένως, είναι σημαντικό να δοκιμάσετε διεξοδικά τα API σας για να επισημάνετε και να διορθώσετε σφάλματα κατά την ανάπτυξη για να αποτρέψετε πιθανές αστοχίες του συστήματος σε περιβάλλοντα παραγωγής.
Δοκιμή Node.js API με χρήση Mocha, Chai και Chai-HTTP
Μόκα είναι ένα ευρέως χρησιμοποιούμενο πλαίσιο δοκιμών που είναι συμβατό με διάφορα Πλαίσια JavaScript. Ένα από τα βασικά χαρακτηριστικά του είναι ένας ευέλικτος δοκιμαστικός δρομέας που απλοποιεί τη διαδικασία αποτελεσματικής διαχείρισης και εκτέλεσης δοκιμαστικών υποθέσεων.
Υποστηρίζει επίσης διάφορα στυλ δοκιμών, συμπεριλαμβανομένων των σύγχρονων και ασύγχρονων δοκιμών, επιτρέποντας ένα ευρύ φάσμα σεναρίων δοκιμών.
Αφ 'ετέρου, Chai και Chai-HTTP είναι βιβλιοθήκες ισχυρισμών που μπορείτε να χρησιμοποιήσετε σε συνδυασμό με το Mocha. Το Chai παρέχει ένα ευρύ φάσμα εκφραστικών και ευανάγνωστων διεπαφών ισχυρισμών όπως πρέπει, αναμένετε και διεκδικώ. Ενώ, το Chai-HTTP, μια επέκταση του Chai, παρέχει μια διεπαφή ειδικά σχεδιασμένη για τη δοκιμή αιτημάτων HTTP και την επιβεβαίωση των απαντήσεών τους.
Χρησιμοποιώντας το Mocha σε συνδυασμό με το Chai και το Chai-HTTP, μπορείτε να δοκιμάσετε αποτελεσματικά τα API. Η ροή εργασιών δοκιμής περιλαμβάνει:
- Πραγματοποίηση αιτημάτων HTTP στα καθορισμένα τελικά σημεία API.
- Καθορισμός των αναμενόμενων απαντήσεων.
- Επικύρωση των δεδομένων που λαμβάνονται από την καθορισμένη πηγή, τους κωδικούς κατάστασης HTTP και άλλα.
Μπορείτε επίσης να προσομοιώσετε σενάρια δοκιμής σφάλματος API που μπορεί να προκύψουν σε τέτοιες καταστάσεις και ποιες ενέργειες θα πρέπει να ενεργοποιηθούν σε περίπτωση που προκύψουν.
Μπορείτε να βρείτε τον κωδικό αυτού του έργου σε αυτό Αποθετήριο GitHub.
Ρυθμίστε τη βάση δεδομένων Express.js Project και MongoDB
Για να ξεκινήσετε, δημιουργήστε έναν διακομιστή ιστού Expressκαι εγκαταστήστε αυτά τα πακέτα:
npm εγκατάσταση cors dotenv mongoose mongodb
Επόμενο, δημιουργήστε μια βάση δεδομένων MongoDB ή διαμορφώστε ένα σύμπλεγμα MongoDB στο cloud. Στη συνέχεια, αντιγράψτε τη διεύθυνση URL σύνδεσης της βάσης δεδομένων, δημιουργήστε ένα .env αρχείο στον ριζικό κατάλογο και επικολλήστε στη συμβολοσειρά σύνδεσης της βάσης δεδομένων:
CONNECTION_STRING="συμβολοσειρά σύνδεσης"
Για να ολοκληρώσετε τη διαδικασία εγκατάστασης, πρέπει να διαμορφώσετε τη σύνδεση της βάσης δεδομένων και να ορίσετε τα μοντέλα δεδομένων για τα δεδομένα χρήστη σας. Ανατρέξτε στον κώδικα στο αποθετήριο GitHub αυτού του έργου για:
- Διαμορφώστε τη σύνδεση της βάσης δεδομένων, σε utils/db.js.
- Ορίστε το σχήμα δεδομένων χρήστη στο models/user.model.js.
Καθορίστε τις Λειτουργίες Handler για τις διαδρομές API
Οι λειτουργίες του ελεγκτή θα διαχειρίζονται την προσθήκη και την ανάκτηση δεδομένων χρήστη στη βάση δεδομένων. Για να διασφαλίσετε τη λειτουργικότητα αυτών των λειτουργιών χειριστή, θα ελέγξετε εάν μπορούν να δημοσιεύσουν και να ανακτήσουν με επιτυχία δεδομένα από τη βάση δεδομένων.
Στον ριζικό κατάλογο, δημιουργήστε ένα controllers/userControllers.js αρχείο και προσθέστε τον ακόλουθο κώδικα:
συνθ Χρήστης = απαιτώ("../models/user.model");
exports.registerUser = ασυγχρονισμός (απαιτ., ανταπ.) => {
συνθ { όνομα χρήστη, κωδικός πρόσβασης } = req.body;δοκιμάστε {
αναμένω User.create({ όνομα χρήστη, κωδικός πρόσβασης});
res.status(201).στείλετε({ μήνυμα: "Ο χρήστης εγγράφηκε με επιτυχία" });
} σύλληψη (λάθος) {
κονσόλα.log (σφάλμα);
res.status(500).στείλετε({ μήνυμα: 'Παρουσιάστηκε σφάλμα!! ' });
}
};
exports.getUsers = ασυγχρονισμός (απαιτ., ανταπ.) => {
δοκιμάστε {
συνθ χρήστες = αναμένω User.find({});
res.json (χρήστες);
} σύλληψη (λάθος) {
κονσόλα.log (σφάλμα);
res.status(500).στείλετε({ μήνυμα: 'Παρουσιάστηκε σφάλμα!!' });
}
};
Καθορίστε τις διαδρομές API
Δημιούργησε ένα νέο routes/userRoutes.js αρχείο στον ριζικό κατάλογο και προσθέστε τον ακόλουθο κώδικα.
συνθ εκφράζω = απαιτώ('εξπρές');
συνθ δρομολογητής = εξπρές. Router();
συνθ userControllers = απαιτώ("../controllers/userControllers");
router.post('/api/register', userControllers.registerUser);
router.get('/api/χρήστες', userControllers.getUsers);
μονάδα μέτρησης.exports = δρομολογητής;
Καθορίστε το σημείο εισόδου του διακομιστή σας
Ενημερώστε το server.js αρχείο με τον παρακάτω κώδικα.
συνθ εκφράζω = απαιτώ('εξπρές');
συνθ κορς = απαιτώ('κορς');
συνθ app = express();
συνθ λιμάνι = 5000;
απαιτώ('dotenv').config();
συνθ connectDB = απαιτώ("./utils/db");connectDB();
app.use (express.json());
app.use (express.urlencoded({ επεκτάθηκε: αληθής }));
app.use (cors());συνθ userRoutes = απαιτώ("./routes/userRoutes");
app.use('/', userRoutes);app.listen (port, () => {
κονσόλα.κούτσουρο(`Ο διακομιστής ακούει στο http://localhost:${port}`);
});
μονάδα μέτρησης.exports = εφαρμογή;
Γράψτε και εκτελέστε τις δοκιμαστικές περιπτώσεις με μόκα
Με το API χρήστη στη θέση του, προχωρήστε και διαμορφώστε το περιβάλλον δοκιμής. Αρχικά, εγκαταστήστε αυτά τα πακέτα ως εξαρτήσεις dev.
npm εγκατάσταση mocha chai chai-http --save-dev
Τώρα, προσθέστε το ακόλουθο σενάριο στο αρχείο package.json.
"σενάρια": {
"δοκιμή": "mocha --timeout 10000"
},
Αυτή η εντολή θα εκτελέσει τις περιπτώσεις δοκιμής—η προσθήκη της ιδιότητας χρονικού ορίου με την κατάλληλη τιμή σάς επιτρέπει να ελέγχετε τον μέγιστο επιτρεπόμενο χρόνο εκτέλεσης μεμονωμένων περιπτώσεων δοκιμής.
Αυτό μπορεί να είναι χρήσιμο για την αποτροπή της αόριστης εκτέλεσης των δοκιμών ή της πολύ γρήγορης ολοκλήρωσης πριν από την ολοκλήρωση των υποθέσεων δοκιμής.
Δοκιμάστε τα τελικά σημεία του API
Στον ριζικό κατάλογο, δημιουργήστε έναν νέο φάκελο και ονομάστε τον δοκιμή. Μέσα σε αυτόν τον φάκελο, δημιουργήστε έναν νέο user.tests.js αρχείο και προσθέστε τον ακόλουθο κώδικα για την περίπτωση δοκιμής τελικού σημείου POST.
συνθ chai = απαιτώ('chai');
συνθ chaiHttp = απαιτώ('chai-http');
συνθ εφαρμογή = απαιτώ('../υπηρέτης');chai.use (chaiHttp);
συνθ προσδοκώ = chai.αναμένω;περιγράφω('API χρήστη', () => {
περιγράφω('POST /api/register', () => {
το("θα πρέπει να χειρίζεται την εγγραφή χρήστη", (ολοκληρώθηκε) => {
chai.request (εφαρμογή)
.Θέση('/api/register')
.στείλετε({ όνομα χρήστη: 'testUser', Κωδικός πρόσβασης: «δοκιμαστικός κωδικός» })
.τέλος((err, res) => {
αν (λάθος) {
αναμένω (res).to.have.status(500);
περιμένω (res.body).to.have.property('μήνυμα').δηλαδή ίσο('Παρουσιάστηκε σφάλμα!!');
} αλλού {
αναμένω (res).to.have.status(201);
περιμένω (res.body).to.have.property('μήνυμα').ίσος("Ο χρήστης εγγράφηκε με επιτυχία");
}
Έγινε();
});
});
});
});
Αυτός ο κώδικας ορίζει μια δοκιμαστική περίπτωση χρησιμοποιώντας Chai και Chai HTTP για να δοκιμάσει τη λειτουργικότητα εγγραφής χρήστη του API χρήστη.
Στέλνει ένα αίτημα POST στο καθορισμένο τελικό σημείο και κάνει ισχυρισμούς σχετικά με την αναμενόμενη απόκριση API, επαληθεύοντας εάν η λειτουργία εγγραφής χρήστη ήταν επιτυχής ή αν παρουσιάστηκε σφάλμα.
Ακολουθεί μια ανάλυση των κύριων στοιχείων της δοκιμαστικής περίπτωσης:
- αναμένω -Αυτό το αντικείμενο σάς επιτρέπει να χρησιμοποιείτε τις μεθόδους ισχυρισμού Chai για να κάνετε ισχυρισμούς σχετικά με την αναμενόμενη απόκριση από το API.
- περιγράφω - Περιγράφει τις σχετικές περιπτώσεις δοκιμών μαζί, σε αυτήν την περίπτωση, τις δοκιμές που σχετίζονται με το API χρήστη. Το ένθετο μπλοκ περιγραφής ομαδοποιεί περαιτέρω σχετικές περιπτώσεις δοκιμής μαζί, σε αυτήν την περίπτωση, το POST /api/register. Αυτό βοηθά στην οργάνωση των δοκιμαστικών περιπτώσεων που σχετίζονται ειδικά με μια συγκεκριμένη λειτουργικότητα.
- το - Αυτή η συνάρτηση περιγράφει την αναμενόμενη συμπεριφορά του τερματικού σημείου API.
- τέλος - Αυτή η λειτουργία στέλνει το αίτημα και παρέχει μια λειτουργία επανάκλησης για τη διαχείριση της απόκρισης. Η συνάρτηση επανάκλησης εκτελεί βεβαιώσεις χρησιμοποιώντας το αναμένω λειτουργία για έλεγχο της απάντησης που λαμβάνεται από το API.
- Έγινε - Αυτή η λειτουργία εκτελείται για να σηματοδοτήσει το τέλος της δοκιμαστικής περίπτωσης.
Τέλος, προσθέστε τον κωδικό για την περίπτωση δοκιμής τελικού σημείου GET αμέσως μετά την περίπτωση δοκιμής τελικού σημείου POST.
περιγράφω("GET /api/users", () => {
το("θα πρέπει να ανακτήσει όλα τα δεδομένα χρήστη", (ολοκληρώθηκε) => {
chai.request (εφαρμογή)
.παίρνω('/api/χρήστες')
.τέλος((err, res) => {
αν (λάθος) {
αναμένω (res).to.have.status(500);
περιμένω (res.body).to.have.property('μήνυμα').δηλαδή ίσο("Παρουσιάστηκε σφάλμα κατά την ανάκτηση δεδομένων χρήστη");
} αλλού {
αναμένω (res).to.have.status(200);
περιμένω (res.body).to.be.an('πίνακας');
}
Έγινε();
});
});
});
Προχωρήστε και εκτελέστε το δοκιμαστικό σενάριο στο τερματικό σας για να εκτελέσετε τις δύο περιπτώσεις δοκιμής.
τεστ npm
Εάν η εκτέλεση των περιπτώσεων δοκιμής δεν συναντήσει σφάλματα, θα πρέπει να δείτε παρόμοια έξοδο που υποδεικνύει ότι οι δοκιμές πέρασαν επιτυχώς.
Αποτυχίες δοκιμής μπορεί να προκύψουν για διάφορους λόγους, όπως ζητήματα συνδεσιμότητας δικτύου κατά τη διάρκεια αιτημάτων HTTP στη βάση δεδομένων, έλλειψη απαιτούμενων δεδομένων, λογικά σφάλματα και άλλα ζητήματα.
Η Mocha κάνει καλή δουλειά στον εντοπισμό και την επισήμανση τέτοιων σφαλμάτων, παρέχοντας σαφείς και λεπτομερείς αναφορές δοκιμών στα αρχεία καταγραφής που εμφανίζονται στο παράθυρο του τερματικού. Αυτό σας επιτρέπει να εντοπίζετε και να διαγνώσετε εύκολα τα συγκεκριμένα ζητήματα που προκάλεσαν τις αποτυχίες του τεστ.
Η Mocha δεν σας δίνει καμία δικαιολογία για να μην δοκιμάσετε τα API σας
Ενώ η μη αυτόματη δοκιμή της λειτουργικότητας των API σας χρησιμοποιώντας εργαλεία όπως ο Postman είναι μια έγκυρη δοκιμή προσέγγιση, η αξιοποίηση της Mocha και άλλων πλαισίων δοκιμών για αυτοματοποιημένες δοκιμές οδηγεί στο επόμενο επίπεδο.
Με αυτά τα εργαλεία δοκιμών, μπορείτε γρήγορα και εύκολα να αυτοματοποιήσετε τις δοκιμές για να καλύψετε ένα ευρύ φάσμα σεναρίων και περιπτώσεων αιχμής. Αυτό σας δίνει τη δυνατότητα να εντοπίζετε γρήγορα σφάλματα και να τα επιλύετε πριν από την ανάπτυξη των API σας, διασφαλίζοντας ότι στέλνετε λογισμικό υψηλής ποιότητας στην παραγωγή.