在Sinon中重置存根历史记录失败

下班后

我想在每次测试后重置历史记录(调用次数)。在Webstorm IDE中工作正常,在NPM测试中失败告诉我

状态机触发器“在每个之前”的钩子,用于“如果输入非空则调用步骤函数处理程序”:TypeError:stepFunctionHandler.startStepFunction.resetHistory不是函数

据我所知,我正在关注sinon文档。

这是测试中的代码:

const config = require('config');
const { attempt } = require('@mystuff/utils');
const stepFunctionHandler = require('../../serviceHandlers/stepFunctionHandler');
const logger = require('../../../components/logger.js');


async function trigger(event) {

  if (!event || !Object.keys(event).length) {
    throw new Error('Invalid input. Expecting a list of normalized objects but input was empty.');
  }

  logger.info(`Input event: ${event}`);

  const stateMachineARN = config.get('stateMachine.arn');
  const [error, result] = await attempt(() =>
    stepFunctionHandler.startStepFunction(stateMachineARN, event),
  );

  if (error) {
    logger.error(`Invoking state machine failed ${error}`);
    throw new Error(`Invoking state machine failed ${error}`)
  }

  return { result, statusCode: 200 };
}

module.exports = { trigger };

这是测试

const assert = require('assert');
const sinon = require('sinon');
const stateMachineTriggerHandler = require('../../handler');
const stepFunctionHandler = require('../../../../serviceHandlers/stepFunctionHandler');

const event = { foo: 'bar' };

const startStepFunctionMock = sinon.stub(stepFunctionHandler, 'startStepFunction');

describe('State Machine Trigger', () => {

  beforeEach(() => {
    stepFunctionHandler.startStepFunction.resetHistory()
  })

  it('invokes the step function handler if input is non empty', async () => {
    startStepFunctionMock.resolves({ state: 'success' });
    await assert.doesNotReject(async () => {
      await stateMachineTriggerHandler.trigger(event);
    });
    sinon.assert.calledOnce(stepFunctionHandler.startStepFunction);
  });


  it('throws an error if the step function invocation failed', async () => {
    startStepFunctionMock.rejects(Error(`failed to start`));

    await assert.rejects(async () => {
      await stateMachineTriggerHandler.trigger(event);
    }, (err) => {
      assert.strictEqual(err.name, 'Error');
      assert.strictEqual(err.message, 'Invoking state machine failed Error: failed to start');
      return true;
    });
    sinon.assert.calledOnce(stepFunctionHandler.startStepFunction);
  });

  it('throws an error if input is undefined', async () => {
    await assert.rejects(async () => {
      await stateMachineTriggerHandler.trigger();
    }, (err) => {
      assert.strictEqual(err.name, 'Error');
      assert.strictEqual(err.message, 'Invalid input. Expecting a list of normalized restrictions but input was empty.');
      return true;
    });
    sinon.assert.notCalled(stepFunctionHandler.startStepFunction);
  });

  it('throws an error if input is empty', async () => {
    await assert.rejects(async () => {
      await stateMachineTriggerHandler.trigger({});
    }, (err) => {
      assert.strictEqual(err.name, 'Error');
      assert.strictEqual(err.message, 'Invalid input. Expecting a list of normalized restrictions but input was empty.');
      return true;
    });
    sinon.assert.notCalled(stepFunctionHandler.startStepFunction);
  });
});

这是来自npm test的堆栈跟踪

State Machine Trigger "before each" hook for "invokes the step function handler if input is non empty":
     TypeError: stepFunctionHandler.startStepFunction.resetHistory is not a function
      at Context.<anonymous> (functions/qeTools/stateMachineTrigger/test/unit/test.js:17:43)
      at processImmediate (internal/timers.js:456:21)
      at process.topLevelDomainCallback (domain.js:137:15)
安德烈尤努格罗

您需要使用存根变量才能调用已经定义的resetHistory()startStepFunctionMock

因此,将您的每项更改为:

beforeEach(() => {
  startStepFunctionMock.resetHistory();
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ipdb会话中的历史记录

来自分类Dev

zsh中的命令历史记录

来自分类Dev

zsh中的命令历史记录

来自分类Dev

zsh中的命令历史记录

来自分类Dev

脚本中的Bash历史记录:`!#:*`

来自分类Dev

FakeItEasy:重置假呼叫历史记录/忽略呼叫

来自分类Dev

重置复选框已选中状态从历史记录中返回

来自分类Dev

在TFS工作项查询设计器中重置工作项类型历史记录

来自分类Dev

更新颜色条而无需在matplotlib用户界面中重置缩放历史记录

来自分类Dev

如何在Bash中重置已编辑的历史记录行?

来自分类Dev

重置复选框已选中状态从历史记录中返回

来自分类Dev

使用 Qt4Agg 后端在 Matplotlib 中重置工具栏历史记录

来自分类Dev

bash 历史记录未记录失败或错误的命令

来自分类Dev

显示历史记录表中的更改历史记录

来自分类Dev

如何使用bash历史记录使用历史记录中的参数运行命令?

来自分类Dev

在Firefox的历史记录面板中增加历史记录项的数量

来自分类Dev

显示历史记录表中的更改历史记录

来自分类Dev

从提交历史记录中删除大于100MB的文件-迁移至Github失败

来自分类Dev

在Shell脚本中实施时,历史记录替换失败

来自分类Dev

在git存储库的历史记录中查找大文件失败

来自分类Dev

从git删除历史记录-git命令失败

来自分类Dev

Bash:在对等方重置 ssh 连接后,历史记录丢失:如何保存历史记录?

来自分类Dev

从Zathura中的历史记录中打开文件

来自分类Dev

如何在GDB中运行记录指令历史记录和函数调用历史记录?

来自分类Dev

如何避免在ipython历史记录中存储命令?

来自分类Dev

在BigQuery的历史记录表中添加新字段

来自分类Dev

如何清除WKWebView中的历史记录?

来自分类Dev

从历史记录中删除单个提交

来自分类Dev

如何禁用Django表单中的输入历史记录?

Related 相关文章

  1. 1

    ipdb会话中的历史记录

  2. 2

    zsh中的命令历史记录

  3. 3

    zsh中的命令历史记录

  4. 4

    zsh中的命令历史记录

  5. 5

    脚本中的Bash历史记录:`!#:*`

  6. 6

    FakeItEasy:重置假呼叫历史记录/忽略呼叫

  7. 7

    重置复选框已选中状态从历史记录中返回

  8. 8

    在TFS工作项查询设计器中重置工作项类型历史记录

  9. 9

    更新颜色条而无需在matplotlib用户界面中重置缩放历史记录

  10. 10

    如何在Bash中重置已编辑的历史记录行?

  11. 11

    重置复选框已选中状态从历史记录中返回

  12. 12

    使用 Qt4Agg 后端在 Matplotlib 中重置工具栏历史记录

  13. 13

    bash 历史记录未记录失败或错误的命令

  14. 14

    显示历史记录表中的更改历史记录

  15. 15

    如何使用bash历史记录使用历史记录中的参数运行命令?

  16. 16

    在Firefox的历史记录面板中增加历史记录项的数量

  17. 17

    显示历史记录表中的更改历史记录

  18. 18

    从提交历史记录中删除大于100MB的文件-迁移至Github失败

  19. 19

    在Shell脚本中实施时,历史记录替换失败

  20. 20

    在git存储库的历史记录中查找大文件失败

  21. 21

    从git删除历史记录-git命令失败

  22. 22

    Bash:在对等方重置 ssh 连接后,历史记录丢失:如何保存历史记录?

  23. 23

    从Zathura中的历史记录中打开文件

  24. 24

    如何在GDB中运行记录指令历史记录和函数调用历史记录?

  25. 25

    如何避免在ipython历史记录中存储命令?

  26. 26

    在BigQuery的历史记录表中添加新字段

  27. 27

    如何清除WKWebView中的历史记录?

  28. 28

    从历史记录中删除单个提交

  29. 29

    如何禁用Django表单中的输入历史记录?

热门标签

归档