我下面有使用锡农沙箱存根的测试代码
index.ts
export * from './init.actions';
init.actions.ts
import { ModuleAnswer } from '../models/choice';
import { init } from '../templates/config';
import { moduleQuestion } from '../questions';
export async function initActions(): Promise<any> {
const moduleAnswer: ModuleAnswer = await moduleQuestion();
return init(moduleAnswer.name);
}
init.actions.spec
import sinon from 'sinon';
import { expect } from 'chai';
import * as questions from '../questions';
import { ModuleAnswer, ModuleValue } from '../models/choice';
describe('src/actions/init.actions', () => {
let sandbox: sinon.SinonSandbox;
let moduleQuestionStub: sinon.SinonStub;
const mockAnswer: ModuleAnswer = {
name: ModuleValue.CORE,
}
beforeEach(() => {
sandbox = sinon.createSandbox();
});
afterEach(() => {
sandbox.restore();
});
it('should always call mandatory questions', async () => {
moduleQuestionStub = sandbox.stub(questions, 'moduleQuestion').resolves(mockAnswer);
await initActions();
expect(moduleQuestionStub).to.be.called;
});
});
.mocharc.js
'use strict';
module.exports = {
diff: true,
extension: ['ts'],
package: './package.json',
slow: 75,
recursive: true,
require: ['ts-node/register', 'test/mocha.require.ts'],
reporter: 'spec',
spec: 'src/**/*.spec.ts',
};
test / mocha.require.ts
require('sinon');
require('chai').use(require('sinon-chai'));
使用console.log(moduleQuestionStub);
运行时,我得到的结果是[Function: functionStub]
,因此存根似乎在测试本身中返回了
当我运行测试时,异步函数moduleQuestion
未被存根。为什么会这样?