【问题标题】:Mocking dependency of module/function under test in Javascript在Javascript中模拟被测模块/函数的依赖关系
【发布时间】:2017-07-26 11:04:35
【问题描述】:

假设我想测试以下示例:

import {fetchResourceFromBackend} from './myfetch';

const fetchSomething = (dispatch) => {

  dispatch(2);

  return fetchResourceFromBackend('/api/abc').then( result => {
    dispatch(3);
  });
};

fetchResourceFromBackend 是一个复杂的函数。我怎样才能测试这一点,并且不受fetchResourceFromBackend 代码的影响(任何模式或工具建议,我使用mochasinon 但无法实现)?

我唯一的选择是提供fetchResourceFromBackend 作为fetchSomething 的参数以便我可以模拟它吗?

【问题讨论】:

  • 你可以开玩笑地嘲笑它:jest.mock('./myfetch')facebook.github.io/jest/docs/manual-mocks.html
  • 我现在试试,这似乎是我需要的东西。不知道为什么有人投了反对票,我认为这个问题是合法的。
  • 谢谢!我使用了你的建议,效果很好。

标签: javascript unit-testing reactjs testing redux


【解决方案1】:

使用 jest 作为@Mikhail 建议我这样解决:

// test/something-test.js

import {myFetch} from '../_mocks_/utilities';

jest.doMock('modules/utilities', () =>({
    myFetch: myFetch
}));


const {fetchSomething} = require('modules/something');

describe('#fetchSomething', ...

这里的fetchSomething 是被测函数,它内部依赖于来自'modules/utilities'myFetch 函数。我用来自'../_mocks_/utilities'myFetch 模拟了这种依赖关系。

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 2015-12-28
    • 1970-01-01
    • 2020-01-11
    • 2015-02-04
    • 2017-09-25
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多