Javascript React-Redux测试失败,因为它可以';t通过操作获取数据
我试图使用Jest和Ezyme测试我的智能组件,但它没有数据可渲染,因为它应该通过正确的操作获取。错误是:Javascript React-Redux测试失败,因为它可以';t通过操作获取数据,javascript,reactjs,react-redux,jestjs,enzyme,Javascript,Reactjs,React Redux,Jestjs,Enzyme,我试图使用Jest和Ezyme测试我的智能组件,但它没有数据可渲染,因为它应该通过正确的操作获取。错误是:gettask不是函数 Enzyme.configure({ adapter: new Adapter() }); describe('Main', () => { describe('when loading is true', () => { it('should render loading div', () => { const wrapp
gettask不是函数
Enzyme.configure({ adapter: new Adapter() });
describe('Main', () => {
describe('when loading is true', () => {
it('should render loading div', () => {
const wrapper = mount(<Main.WrappedComponent loading={true} />);
expect(wrapper.html()).toEqual('<div>Loading</div>');
wrapper.unmount();
});
});
});
您需要将GetTask作为函数传递到您的道具中:
const wrapper = mount(<Main.WrappedComponent loading={true} getTasks={() => {}} />);
const wrapper=mount({}}/>);
当Ezyme挂载时,它将调用componentDidMount并调用未定义的prop并放大更好的解决方案是模拟函数:
const getTasksMock = jest.fn();
const wrapper = mount(<Main.WrappedComponent loading={true} getTasks={getTasksMock}/>);
const getTasksMock=jest.fn();
const wrapper=mount();
然后您可以通过以下方式检查调用函数:toHaveBeenCalled()
能否显示WrappedComponent?您需要模拟服务器的响应。你可以用nockmodule@AdrianPażuchadone@IuriiBudnikov它只是从本地存储导入,没有服务器,甚至没有
fetch
func,但我明白你的意思了。你能给我发一个例子的链接吗?@IuriiBudnikov我查了nock
,但它只用于HTTP请求,我没有HTTP请求,非常感谢!这对我有用。但是如果我想测试这个组件的正确呈现,我想用getTasks()
做什么?我建议您使用Sinon存根这个函数,并且您可以确保在您期望的时候调用它。我将进行另一个测试,将数据
提供到您的组件中,然后您可以断言映射
函数正在正确输出元素。请在我的测试中描述虚拟数据
?是的,使用您期望的正确格式。您可以提供一些“active”的obj_status
,以测试其中的if语句,以及一个具有不同obj_status
的语句,并确保该元素不会得到renderdok,明白了吗!再次非常感谢你!
const getTasksMock = jest.fn();
const wrapper = mount(<Main.WrappedComponent loading={true} getTasks={getTasksMock}/>);