Auf der Google groups post on deprecating loopback-testing gibt es eine Frage, die ein gutes Beispiel dafür liefert, wie Tests ohne Loopback-Test durchgeführt werden können. Dieser Thread spricht davon, stattdessen supertest zu verwenden.Loopback-Test mit Supertest, Mocha und Modellen
Unten ist ein Versuch, den ich gemacht habe, um Mocha, superest zusammen mit Modellen (from app.js) zu kombinieren. Das Ergebnis funktioniert sehr gut, wenn ich die Datei selbst ausführe. Aber wenn ich eine andere Testdatei hatte (zB test-teacher.js), dann beginnt die erste Testdatei (nenne sie test-student.js) auf seltsame Weise zu versagen, was ich nicht beschreiben kann.
Fehle ich etwas oder können Modelle nicht benutzt werden, wie ich sie unten verwende?
describe('/Student', function() {
var server = require('../server/server')
var loopback = require('loopback')
var supertest = require('supertest')
var request = require('supertest')(server)
var dataSource = server.dataSource('db', {adapter: 'memory'})
var Student = dataSource.define('Student', {
'id': Number,
'points': Number
});
beforeEach(function() {
Student.updateOrCreate({id: 1, points: 5000});
})
it('Post a new student', function (done) {
request.post('/api/Students').send({points: 5000}).expect(200, done)
})
})
Woher beziehen Sie die Variable 'dataSource'? In jedem Fall führen mehrere Dateien im selben Test alle gemeinsam aus, dh Sie teilen auch Modelldefinitionen und Daten im Speicher. Ich schätze, dass Sie Ihre LB-App dort irgendwo starten, ja? Sie müssen sicherstellen, dass die Daten geschlossen werden, die Daten können jedoch weiterhin bestehen bleiben. Das wäre meine Vermutung. – jakerella
Ausgezeichneter Fang. Fehler beim Ausschneiden und Einfügen Deklaration von 'dataSource' hinzugefügt. WRT zum Starten der LB-App, ich mache es nicht explizit. Der obige Code kann mit 'mocha test/test-student.js' ausgeführt werden. Und dann kann ich alle Tests mit 'Mokka-Test' durchführen. Durch die Definition der Anfrage beim Server wird LB aufgerufen. – user465342
Also ... stellt sich heraus, dass ich in der zweiten Datei test-teacher.js auch 'Student' definiert habe. Wenn ich 'Student' in test-teacher.js ausdentiere, funktioniert der obige Test. Dann scheitert natürlich der Test in test-teacher.js, weil es jetzt nicht um 'Student' geht. – user465342