首页 > 解决方案 > Sinon沙箱存根导出的异步功能不起作用

问题描述

我有以下使用 Sinon 沙箱存根的测试代码

索引.ts

export * from './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',
};

测试/mocha.require.ts

require('sinon');
require('chai').use(require('sinon-chai'));

当我运行时,console.log(moduleQuestionStub);我得到[Function: functionStub]了结果,所以存根似乎在测试本身中返回

当我运行测试时,异步函数moduleQuestion没有被存根。为什么会这样?

标签: javascriptnode.jstypescriptmocha.jssinon

解决方案


推荐阅读