笑话+酶。无法读取未定义的属性“_isMockFunction”。模拟箭头键按下

2023-12-31

我的主要组件的测试方法存在严重问题。经过多次重试,我的实际测试仍然不起作用,如下所示:

describe('<App />:', () => {
    beforeEach(() => {
        wrapper = mount(<Provider store={store}><App /></Provider>);
    });
    describe('Interaction:', () => {
        it('should call ArrowDown()', () => {
            const instance = wrapper.instance();
            spy = jest.spyOn(instance, 'ArrowDown');
            instance.forceUpdate();
            wrapper.simulate('keyDown', {key: 'Arrow down'});
            expect(spy).toHaveBeenCalled();
        });
    }); 
});

我从控制台得到的是:

类型错误:无法读取未定义的属性“_isMockFunction”

其他测试(例如快照或查找应用程序内部的其他组件)工作正常。我正在寻找类似的问题,但我发现的解决方案并不像您所看到的那样有效。请帮忙。

PS:我使用原型时出现同样的错误:

describe('<App />:', () => {
    beforeEach(() => {
        wrapper = mount(<Provider store={store}><App /></Provider>);
    });
    describe('Interaction:', () => {
            it('should call ArrowDown()', () => {
            spy = jest.spyOn(App.prototype, 'ArrowDown');
            wrapper = mount(<Provider store={store}><App /></Provider>);
            wrapper.simulate('keyDown', {key: 'Arrow down'});
            expect(spy).toHaveBeenCalled();
        });
    }); 
});

看起来像jest.SpyOn(App.prototype, 'ArrowDown')是导致您的问题的线路。我不知道为什么不看你的App声明,但我想指出,这不是我进行测试的方式,而且我敢说这可能不是 Jest/Enzyme 的预期使用方式。

在此测试中,除了 React 已成功将按键绑定到组件函数这一事实之外,您实际上并没有测试任何其他内容,这实际上并没有对您的代码或任何特定逻辑执行任何有意义的操作。我通常会编写一个测试来模拟按钮单击,然后检查新的 DOM 状态以检查按钮单击是否达到了预期的效果。

如果涉及到服务调用,我可能会监视服务层,检查它是否被正确调用并返回受控值,然后确保 DOM 处于正确状态。当您以这种方式进行操作时,实际上没有必要监视各个组件方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

笑话+酶。无法读取未定义的属性“_isMockFunction”。模拟箭头键按下 的相关文章

随机推荐