только что столкнулся с некоторыми проблемами при тестировании реактивных функций модуля.мне удалось смоделировать store, props, state и вызвать функцию модуля, вот мой тест:
import React from 'react';
import { shallow, configure } from 'enzyme';
import { expect } from 'chai';
import Adapter from 'enzyme-adapter-react-16';
import {Login} from '../src/containers/authentification/login'
configure({ adapter: new Adapter() })
describe('test login module', () => {
test('Login fails', () => {
const store = {
getState: jest.fn(() => ({credentials:{token: 'token'}})),
dispatch: jest.fn(),
subscribe: jest.fn(),
}
const navigation = { navigate: jest.fn() };
const props = {
navigation: jest.fn(),
store,
}
props.navigation.state = {params: {}}
const wrapper = shallow(<Login {...props}/>);
wrapper.update();
wrapper.setState({driver: 'Kuku', password: 'kuku'})
const instance = wrapper.instance();
instance.state.driver = 'dfgdf'
wrapper.update()
console.log(wrapper.state(), instance.state)
expect(instance.loginTry()).toBeFalsy();
});
});
Как видно, я также устанавливаю состояние для оболочки и экземпляра, и console.log()
он печатает как есть,но, запустив тест npm, я получил:
console.log __tests__/APlication.js:39
{ driver: 'dfgdf',
password: 'kuku',
error: null,
driverInput: '#bdc3c7',
passwordInput: '#bdc3c7',
errorText: null } { driver: 'dfgdf',
password: 'kuku',
error: null,
driverInput: '#bdc3c7',
passwordInput: '#bdc3c7',
errorText: null }
● Login fails
ReferenceError: code is not defined
89 |
90 | loginTry() {
> 91 | code = this.state.driver;
| ^
92 | password = this.state.password;
93 |
94 | LoginRequest(code, password).then((response) => {
Что здесь можно пропустить, чего я не замечаю?Не должно ли быть состояние в этой функции уже установлено, как это было раньше с setState?