簡體   English   中英

是否可以使用Jest模擬本地函數

[英]Is it possible to mock local functions using Jest

我有一個文件(file.js)在同一個文件中包含3個函數:

file.js:

const fn1 = (number) => {
    return number + 1;
}

export const fn2 = (value) => {
    return value;
}

export const fn3 = (number) => {
    return fn1(number);
}

export const fn4 = (number) => {
    return fn2(number);
}

是否可以使用JEST定期模擬這些功能? 我希望實現的是這些方面:

file.test.js:

import { fn2, fn3, fn4 } from 'file.js';

describe('fn2', () => {
  test('normal test.' => {
    expect(fn2(1)).toBe(1);
  })
});

describe('fn3', () => {
  test('mock fn1 for this test.' => {
    mock fn1 = () => { return 1 };

    expect(fn3(2)).toBe(1);
  })
});

describe('fn4', () => {
  test('mock fn2 for this test.' => {
    mock fn2 = () => { return 1 };

    expect(fn4(2)).toBe(1);
  })
});

通過JS模塊的工作方式是不可能的。 只有導出的函數對外部可見,所有其他東西只在模塊的范圍內可見,因此無法模擬它。 此外,您無需模擬此功能,因為您只想測試公共API。

測試函數本身並為此模塊模擬它的唯一方法是將它放入一個自己的模塊中,如果它是一個非常復雜的函數,你需要良好的測試覆蓋率,並且當它在另一個模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM