Friday, May 17, 2024
 Popular · Latest · Hot · Upcoming
186
rated 0 times [  188] [ 2]  / answers: 1 / hits: 26279  / 6 Years ago, tue, may 8, 2018, 12:00:00

I have this React.js app that is a simple Cart app. https://codesandbox.io/s/znvk4p70xl



The problem is I am trying to unit test the state of the application using Jest and Enzyme but it does not seem to work. Here is my Todo.test.js unit test:



import React from 'react';
import { shallow, mount, render } 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 = mount(<Todo cart={cart} />);
const firstInput = wrapper.find('.name');
firstInput.simulate('change', { target: { value: 'Pink' } });

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

const submitButton = wrapper.find('.addtocart');
submitButton.simulate('click');

wrapper.update();

expect(wrapper.state('price')).toBe(26);

console.log(wrapper.state());
console.log(wrapper.props().cart);

});


When I run the test, the cart still says the same thing when the item Pink should have been added.



How can this be when I have simulated a button click on the addToCart method?



 PASS  src/__tests__/todo.test.js
● Console
console.log src/__tests__/todo.test.js:32 { price: 26 }
console.log src/__tests__/todo.test.js:33 [ { name: 'Green', cost: 4 }, { name: 'Red', cost: 8 }, { name: 'Blue', cost: 14 } ]

More From » reactjs

 Answers
4

You are attempting to simulate a click on an element with class addtocart. However, you don't have an element with class addtocart. Your add button has an element ID of submit.



Change this:



const submitButton = wrapper.find('.addtocart');



To this:



const submitButton = wrapper.find('#submit');


[#54488] Thursday, May 3, 2018, 6 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jackie

Total Points: 442
Total Questions: 107
Total Answers: 94

Location: Honduras
Member since Sun, Dec 26, 2021
2 Years ago
jackie questions
Sat, Sep 18, 21, 00:00, 3 Years ago
Wed, Jul 14, 21, 00:00, 3 Years ago
;