使用开玩笑的模拟功能来测试调用另一个服务器的代码

时间:2018-08-27 12:07:47

标签: unit-testing jestjs

我想进行单元测试的JavaScript函数大致如下:

const request = require('request-promise-native');
async function callServer() {
    // Prepare parameters
    // Call `request` with parameters
    // Parse response JSON and return
}

是否有任何方法可以在不实际调用真实服务器的情况下对该功能进行单元测试?我可以使用笑话模拟功能以某种方式覆盖request()吗?为此,我是否需要修改每个函数以将request函数作为参数,还是有另一种方法?

1 个答案:

答案 0 :(得分:1)

您可以通过jest.mock模拟导入的模块。 https://jestjs.io/docs/en/api#requirerequiremockmodulename

describe('main description', () => {
it('description of test case', () => {
    jest.mock('request-promise-native', () => {
        return {}; // Return what the request-promise-native supposed to return
    });
    const result = callServer(); 

    expect(result).toBe({});
});
});