2017-05-02 2 views
0

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?

Antwort

0

Sie geben den Rückruf done nicht an die Testfunktion weiter.

Try it('returns a valid sessionContext',() => { Ändern it('returns a valid sessionContext', (done) => {

+0

Ah Mann zu sein, kann nicht glauben, dass ich das verpasst. Vielen Dank! –

Verwandte Themen