Sinon沙箱存根导出的异步功能不起作用

时间:2020-10-19 06:45:21

标签: javascript node.js typescript mocha sinon

我下面有使用锡农沙箱存根的测试代码

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未被存根。为什么会这样?

0 个答案:

没有答案