Meteor / Jasmine / Velocity: Wie testet man eine Servermethode, die einen angemeldeten Benutzer erfordert?

8

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%     
Petrov 01.03.2015, 17:19
quelle

4 Antworten

5

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):

%Vor%

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.

    
Thomas Goorden 03.03.2015, 16:55
quelle
5

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

auf %Vor%

EDIT: Diese Lösung wurde nur mit Meteor & lt; = 1.0.x

getestet     
Shawn Lim 08.03.2015 06:42
quelle
1

Was 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%     
pstuart2 02.03.2015 03:50
quelle
1

Ich denke, dass Meteor.server.method_handlers["nameOfMyMethod"] es Ihnen ermöglicht, eine Meteor-Methode aufzurufen / anzuwenden und this als ersten Parameter zumindest in der aktuellen Version (1.3.3) anzugeben.

%Vor%     
zenWeasel 15.06.2016 04:28
quelle