为了账号安全,请及时绑定邮箱和手机立即绑定

模拟和资产来自外部库的函数

模拟和资产来自外部库的函数

幕布斯7119047 2023-08-05 20:58:57
我正在努力弄清楚如何做到这一点。示例.jsimport Logger from "logging-library";export default function example() {  Logger.error(new Error("Example Error")):}示例.test.jstest("will log an error", () => {expect(Logger.error).toHaveBeenCalledWith(new Error("Example Error");});我发现的例子可能涵盖了模拟整个库,但似乎没有涵盖模拟以及断言它是如何被调用的。
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

单元测试解决方案:


example.js:


import Logger from 'logging-library';


export default function example() {

  Logger.error(new Error('Example Error'));

}

example.test.js:


import Logger from 'logging-library';

import example from './example';


jest.mock(

  'logging-library',

  () => {

    return { error: jest.fn() };

  },

  { virtual: true },

);


describe('64858662', () => {

  afterAll(() => {

    jest.resetAllMocks();

  });

  test('will log an error', () => {

    example();

    expect(Logger.error).toHaveBeenCalledWith(new Error('Example Error'));

  });

});

单元测试结果:


 PASS  src/stackoverflow/64858662/example.test.js

  64858662

    ✓ will log an error (5ms)


------------|----------|----------|----------|----------|-------------------|

File        |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |

------------|----------|----------|----------|----------|-------------------|

All files   |      100 |      100 |      100 |      100 |                   |

 example.js |      100 |      100 |      100 |      100 |                   |

------------|----------|----------|----------|----------|-------------------|

Test Suites: 1 passed, 1 total

Tests:       1 passed, 1 total

Snapshots:   0 total

Time:        4.373s, estimated 12s


查看完整回答
反对 回复 2023-08-05
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信