2017-07-18 48 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方法,它工作得很好!