2017-05-02 11 views
0

私は奇妙な問題に遭遇しました。私のログメッセージによれば、私がテストしている機能は正しく動作していますが、それを供給しようとしているアサーションを無視しているようです。試験を約束するときのジャスミン無視試験

これは、テスト対象のメソッドです:

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>; 
} 

と、これは私の現在の仕様である:

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(); 
      } 
     ); 
    }); 
}); 

これは、端末出力されます:

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 {}' 

あなたが見ることができるように、端末出力は機能が動作していることを確認します。しかし、私がしようとする期待声明を完全に無視しています。これがなぜ起こっているのかについてのアイディアはありますか?

答えて

0

doneコールバックをテスト関数に渡していません。

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

+0

ああ男であることをit('returns a valid sessionContext',() => {を変更してみてください、私はそれを逃した信じることができません。ありがとう! –