你的功能有点复杂,但是没有什么是sinon不能处理的。见
https://sinonjs.org/releases/v1.17.7/stubs/
要了解更多信息,但您应该使用的是
callsArgOnWith
在函数之前。
而不是设置
exec
若要退回承诺,您需要将其设置为存根。这样,您可以使用
callsArgOnWith公司
遇到时的函数。
我改变了你的测试所以现在通过了
执行官
函数返回存根
const fakeShell = { exec: sinon.stub() };
并添加行
fakeShell.exec.callsArgOnWith(2, null, null, 'pass', null)
在运行函数之前
const { expect, use } = require('chai');
const sinon = require('sinon');
const sinonChai = require("sinon-chai");
const utils = require('./main');
use(sinonChai);
it('sinon fake should resolve', async () =>{
const fake = sinon.fake.resolves('resolved');
const result = await fake();
expect(result).to.equal('resolved');
});
describe('Utility Functions', () =>{
describe('shellExec', () =>{
it('should accept an alternate execute function', async () =>{
const fakeShell = { exec: sinon.stub() };
fakeShell.exec.callsArgOnWith(2, null, null, 'pass', null)
const result = await utils.shellExec('pwd', 'xyz', fakeShell);
expect(result).to.equal('pass');
expect(fakeShell.exec).to.have.been.calledOnce;
});
});
});