【问题标题】:Testing function chains using Sinon.JS使用 Sinon.JS 测试函数链
【发布时间】:2017-07-18 10:03:12
【问题描述】:

如何使用 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,但即使尝试在 window 引用上存根 Keycloak 对象后,我也无法使其工作。

【问题讨论】:

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


    【解决方案1】:

    对于任何来到这里的人,这就是我所做的:

    由于 Keycloak 是一个 IIFE,一旦我们这样做,它就会覆盖存根对象

    const kc = Keycloak(config)
    

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

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2020-04-13
      • 1970-01-01
      • 2014-02-28
      相关资源
      最近更新 更多