我有一个React.js应用程序是一个简单的购物车应用程序。 https://codesandbox.io/s/znvk4p70xl
问题是我正在尝试使用state
和Jest
对应用程序的Enzyme
进行单元测试,但它似乎不起作用。这是我的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
之后 也应该<{1}}。
我做错了什么?
答案 0 :(得分:1)
根据我的理解,您的点击代码没有设置任何状态,它只是
更新变量{totalCost}
,因为您应该更新状态
为了获得更新状态值。
OR
您可以通过首先更新测试类中的状态来检查是否 你的州更新与否:
wrapper.setState({
totalCost: 20
});
让我知道你的想法。