我已经看过类似的问题,但仍然无法弄清楚为什么我的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)
    })
})


我最终得到的结果是===嗡嗡声。
感谢帮助。

最佳答案

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

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


它运行这个...

const credentials = authorization()


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

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

07-24 09:31