使用Sinon.JS测试函数链

时间:2017-07-18 10:03:13

标签: javascript unit-testing sinon stub sinon-chai

如何使用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-js的Keycloak是一个IIFE,但即使在尝试在窗口引用上存根Keycloak对象之后,我也无法使其工作。

1 个答案:

答案 0 :(得分:0)

对于任何降落在这里的人来说,这就是我所做的:

由于Keycloak是一个IIFE,它会在我们执行

后覆盖存根对象
const kc = Keycloak(config)

因此我只是从源中导出了这个对象kc并在其上存根init方法并且它运行得很好!