函数内的 Jest 模拟测试函数

时间:2021-02-25 09:07:57

标签: javascript jquery jestjs babel-jest

这是选择器

var getId = function getId(state) {
  return state.ids.id;
};

这是我试图为之编写笑话的函数

export function triggerUpdate() {
    store.dispatch(retrieveData(getId(store.getState())));
}

这是我写的测试。但测试失败: 错误:无法读取未定义的属性“id”。

describe('triggerUpdate', () => {
    it('should call the update', () => {
        const expectedPayload = [
            { type: 'RETRIEVE_ID', chorusActions: [] },
        ];
        console.log(store.getState()); // this is coming as empty
        const spy = jest.spyOn(store, 'dispatch');
        expect(spy).toHaveBeenCalledWith(expectedPayload);
    });
});

我需要模拟 getId() 但尝试了不同的方法。

1 个答案:

答案 0 :(得分:0)

const idSelector = require('path');

describe('triggerUpdate', () => {
    it('should call the update', () => {
        idSelector.getId = jest.fn().mockReturnValue('mockId'); // this is how selector is mocked.

        const expectedPayload = [
            { type: 'RETRIEVE_ID', chorusActions: [] },
        ];
        const spy = jest.spyOn(store, 'dispatch');
        expect(spy).toHaveBeenCalledWith(expectedPayload[0]);
    });
});