猿问

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

我正在努力弄清楚如何做到这一点。


示例.js


import Logger from "logging-library";


export default function example() {

  Logger.error(new Error("Example Error")):

}

示例.test.js


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

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

});

我发现的例子可能涵盖了模拟整个库,但似乎没有涵盖模拟以及断言它是如何被调用的。


幕布斯7119047
浏览 89回答 1
1回答

慕盖茨4494581

单元测试解决方案: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 totalTests:       1 passed, 1 totalSnapshots:   0 totalTime:        4.373s, estimated 12s
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答