在Javascript中模拟测试中的模块/功能的依赖性

时间:2017-07-26 11:04:35

标签: javascript unit-testing reactjs testing redux

假设我想测试以下内容:

import {fetchResourceFromBackend} from './myfetch';

const fetchSomething = (dispatch) => {

  dispatch(2);

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

fetchResourceFromBackend是一些复杂的功能。如何对此进行测试,并且不受fetchResourceFromBackend代码的影响(任何模式或工具建议,我使用mochasinon但无法实现)?

我唯一的选择是fetchResourceFromBackend作为fetchSomething的参数,所以我可以嘲笑它吗?

1 个答案:

答案 0 :(得分:0)

使用 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是受测试的函数,它对来自myFetch的{​​{1}}函数具有内部依赖性。我使用'modules/utilities'中的myFetch来模仿该依赖关系。