Ich habe in ein bizarres Problem geraten. Laut meinen Log-Nachrichten funktioniert die Funktion, die ich teste, korrekt, aber sie scheint alle expect
Behauptungen zu ignorieren, die ich versuche, sie zu liefern.Jasmine Ignorieren Tests beim Testen Versprechen
Mit dieser Methode im Test ist:
getSessionContext(): Promise<ISessionContext> {
let query = '{\
user {\
userId\
clientId\
partnerId\
userType\
visibleId\
firstName\
lastName\
emailAddress\
profileImageUrl\
}\
partner {\
id\
clients {\
clientId\
partnerId\
clientName\
}\
}\
}';
let success = action("AuthService.getSessionContext", (sessionContext: ISessionContext) => {
if (!sessionContext.user) {
throw new Error('Request failed');
}
this.sessionContext = sessionContext;
this.userInfo = sessionContext.user;
this.activeClientId = this.userInfo.clientId; //default to primary client
this.isLoggedIn = true;
return sessionContext;
});
return this.graphQLService.query({query}, {unscoped: true})
.then(success, (data) => {
console.error('Unable to get session information', data);
}) as Promise<ISessionContext>;
}
und dies ist meine aktuelle Spezifikation:
fdescribe('::getSessionContext',() => {
it('returns a valid sessionContext',() => {
spyOn(svc.graphQLService, 'query').and.returnValue(promise_STUB);
console.log(`sessionContext BEFORE ${JSON.stringify(svc.sessionContext)}`);
expect(svc.sessionContext.user).toBeFalsy();
console.log(`userInfo BEFORE ${JSON.stringify(svc.userInfo)}`);
svc.getSessionContext().then
(
(result) => {
console.log(`****************************`);
console.log(`final result ${JSON.stringify(result)}`);
console.log(`sessionContext AFTER ${JSON.stringify(svc.sessionContext)}`);
expect(svc.sessionContext.user).toEqual({});
console.log(`userInfo AFTER ${JSON.stringify(svc.userInfo)}`);
expect(svc.userInfo).toEqual(promiseValue.user);
//FIXME expect statements are being ignored
expect(true).toBeFalsy();
done();
}
);
});
});
Dies ist die Terminal-Ausgabe:
LOG: 'sessionContext BEFORE {"partner":{"clients":[{"clientId":1234},
{"clientId":1235},{"clientId":1236},{"clientId":1237}]}}'
LOG: 'userInfo BEFORE {"partnerId":1234,"clientId":1235}'
LOG: '****************************'
LOG: 'final result {"user":{}}'
LOG: 'sessionContext AFTER {"user":{}}'
LOG: 'userInfo AFTER {}'
Wie Sie sehen können, Der Terminalausgang bestätigt, dass die Funktion funktioniert. Es ignoriert jedoch alle erwarteten Aussagen, die ich zu treffen versuche. Irgendwelche Ideen, warum dies geschieht?
Ah Mann zu sein, kann nicht glauben, dass ich das verpasst. Vielen Dank! –