Sinon存根未替换测试功能

时间:2019-11-14 23:28:05

标签: javascript node.js testing mocha sinon

我已经看过类似的问题,但仍然无法弄清楚为什么我的sinon存根不起作用。测试仍然在调用原始函数。

userFlow.js

function authorization() {
  const options = {
    name: 'buzz',
    state: 'bazz'
  }

  return options
}

const credentials = authorization()

async function main() {
  return credentials.name;
}


main();

module.exports = {
  authorization,
  main
};

test.userFlow.js

const userFlow = require('../userFlow.js');

describe('userFlow()', function() {
    it('should authorize', async function() {
        options = {
            name: 'foo',
            state: 'bar',
        }; 
        sinon.stub(userFlow, 'authorization').returns(options);
        const output = userFlow.main()
        assert(output === foo)
    })
})

我最终输出===嗡嗡声。 感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我认为这里的问题是操作顺序。当您这样做时...

const userFlow = require('../userFlow.js');

它运行此...

const credentials = authorization()

因此,您的sinon优先级无关紧要。我会尝试的是这样的...

async function main(authorization) {
  return authorization().name;
}
...
const output = userFlow.main(userFlow.authorization)