函数内的 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() 但尝试了不同的方法。

解决方法

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]);
    });
});

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...