Я пытаюсь настроить модульное тестирование в React с Enzyme. Когда я запускаю команду «npm-test», тест не проходит. Консольный терминал указывает, что произошел сбой из-за shallow (). Я установил энзим с помощью этой команды npm install --save Enhancement Enhancement-Adapter-React-16 react-test-renderer. Кто-нибудь знает, как решить эту проблему?
Ниже представлен компонент
import React from 'react';
class Login extends Component {
render() {
return <div><input
onChange = {(event) => {
this.setState({input: event.target.value})}}
type = "text" /></div>;
}
}
export default Login;
Это модульный тест, который я написал для компонента.
import React from 'react';
import { configure, shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import Login from '../../../src/components/authentication/Login';
import Enzyme from 'enzyme';
configure({adapter: new Adapter()});
it("should create an entry in component state with the event value", () => {
// given
const component = shallow(<Login/>);
const form = component.find('input');
// when
form.props().onChange({target: {
name: 'myName',
value: 'myValue'
}});
// then
expect(component.state('input')).toEqual('myValue');
});
Спасибо за помощь.
Могут быть проблемы с энзим-адаптером-реакцией-16. похоже, у них 311 открытых проблем: github.com/airbnb/enzyme/… Я запустил ваш код с 15.4 и не имел никаких проблем.





Привет, возможно, ты скучаешь по конвенциям:
вы должны поместить свои тестовые файлы в каталог __tests__, и файл тестов должен быть назван: YourComponent.test.js
Затем заверните свой тест в набор тестов:
describe('Your test suite', () => {
test('it should do something', () => {
// the content of your test
});
});
Привет, я попытался поместить логин и Login.test.js в одну папку, и теперь я получаю эту ошибку ● Не удалось запустить набор тестов ReferenceError: компонент не определен в Object. <anonymous> (src / components / authentication / Login.js: 3:21) в Object. <anonymous> (src / components / authentication / Login.test.js: 5:14) в <anonymous> в process._tickCallback (internal / process / next_tick.js: 188: 7)
Peharps, вы не определили Component в своих компонентах: import React, { Component } from 'react'
я забыл добавить импорт React, {Component} из реакции;
Хорошо, это легко исправить
Спасибо за помощь. Я слишком долго трачу на это; (
Позвольте нам продолжить обсуждение в чате.
Итак, каково собственное сообщение об ошибке?