2017-07-18 43 views
0

如何使用Sinon.JS測試如下功能?使用Sinon.JS測試功能鏈

export function getToken(done) { 
    const kc = Keycloak(config) 
    kc.init({ onLoad: 'login-required' }) 
    .success(authenticated => { 
     authenticated ? done(null, kc.token) : done(new Error('Some error!'), null) 
    }) 
    .error(() => { 
     done(new Error('Some error'), null) 
    }) 
} 

我試圖做類似下面的,但無濟於事:

it('should return access_token',() => { 
    const mockKeycloak = sinon.stub(Keycloak, 'init').returns({ 
     success:() => (true) 
    }) 
    getToken(function() {}) 
    expect(mockKeycloak.callCount).to.equal(1) 
    }) 

基本上Keycloak從keycloak-js是IIFE但即使試圖存根上窗口參考Keycloak對象後,我不能讓它工作。

回答

0

對於任何人誰的土地在這裏,這是我做過什麼:

由於Keycloak是IIFE,它將覆蓋存根對象,一旦我們做

const kc = Keycloak(config) 

所以我剛纔導出此對象kc從來源和它殘存init方法,它工作得很好!