Wenn ich velocity / jasmine verwende, bin ich ein bisschen dran, wie ich eine serverseitige Methode testen soll, die einen aktuell angemeldeten Benutzer erfordert. Gibt es eine Möglichkeit, Meteor denken zu lassen, dass ein Benutzer über Stub / Fake eingeloggt ist?
%Vor%Sie können Benutzer nur zu Ihrer Testsuite hinzufügen. Sie können dies tun, indem Sie diese Benutzer in einem serverseitigen Testskript auffüllen:
Etwas wie:
%Vor% Dann könnte eine gute Strategie sein, das beforeAll
in Ihrem Test zu verwenden, um sich anzumelden (das ist Client Seite):
Dies setzt voraus, dass Ihr Test noch nicht angemeldet ist. Sie können dies interessanter gestalten, indem Sie nach Meteor.user()
suchen und sich ordnungsgemäß in afterAll
usw. abmelden. Beachten Sie, wie Sie den done
-Rückruf an viele der Accounts
-Funktionen übergeben können.
Im Wesentlichen müssen Sie einen Benutzer nicht verspotten. Stellen Sie nur sicher, dass Sie die richtigen Benutzer mit den richtigen Rollen in der Velocity / Jasmine DB zur Verfügung haben.
Nehmen wir an, Sie haben eine serverseitige Methode wie folgt:
%Vor% Sie müssen kein Meteor.loginWithPassword erstellen, bevor Sie die Methode ausführen. Alles, was Sie tun müssen, ist, den this.userId
zu stubben, indem Sie den this
-Kontext des Methodenfunktionsaufrufs ändern.
Alle definierten Meteormethoden sind für das Objekt Meteor.methodMap
verfügbar. Rufen Sie die Funktion einfach mit einem anderen this
-Kontext
EDIT: Diese Lösung wurde nur mit Meteor & lt; = 1.0.x
getestetWas testen Sie und warum muss ein Benutzer angemeldet sein? Die meisten Methoden, die ich benötige, benötigen ein Benutzerobjekt, an das ich das Benutzerobjekt übergebe. Dies erlaubt mir, von einem Test aus anzurufen, ohne tatsächlich angemeldet zu sein. Also würde ich beim tatsächlichen Ausführen des Codes passieren ...
%Vor%aber wenn ich von dem Test laufe, würde ich wie ...
rufen %Vor%Tags und Links meteor meteor-velocity meteor-jasmine