Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React 16状态测试_Javascript_Reactjs - Fatal编程技术网

Javascript React 16状态测试

Javascript React 16状态测试,javascript,reactjs,Javascript,Reactjs,我有这个React.js应用程序,它是一个简单的购物车应用程序 问题是我试图使用Jest和Ezyme对应用程序的状态进行单元测试,但它似乎不起作用。下面是我的Todo.test.js单元测试: import React from 'react'; import { shallow } from 'enzyme'; import Todo from '../components/Todo'; import { configure } from 'enzyme'; import Adapter f

我有这个React.js应用程序,它是一个简单的购物车应用程序

问题是我试图使用Jest和Ezyme对应用程序的状态进行单元测试,但它似乎不起作用。下面是我的Todo.test.js单元测试:

import React from 'react';
import { shallow } from 'enzyme';
import Todo from '../components/Todo';

import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

configure({ adapter: new Adapter() });

test('Test it', async () => {
  // Render a checkbox with label in the document
  const cart = [
    { name: 'Green', cost: 4 },
    { name: 'Red', cost: 8 },
    { name: 'Blue', cost: 14 }
  ];
  const wrapper = shallow(<Todo cart={cart} />);
  const firstInput = wrapper.find('input').at(0);
  firstInput.simulate('change', { target: { value: 'Pink' } });

  const firstCost = wrapper.find('input').at(1);
  firstCost.simulate('change', { target: { value: 200 } });

  const submitButton = wrapper.find('button').at(0);
  submitButton.simulate('click');

  console.log(wrapper.state());
});
末尾的console.log显示为0。这很奇怪,因为即使在模拟单击之后,它也应该大于0


我做错了什么?

据我所知,您的点击代码没有设置任何状态,只是 更新变量{totalCost},其中应更新状态 以获取更新状态值

您可以通过首先更新测试类中的状态来检查 您的状态是否更新:

wrapper.setState({
     totalCost: 20
});

让我知道你的想法。

我把变量弄混了。非常感谢。但模拟点击仍然不会将其添加到购物车中。