Prezentacja do warsztatów React Ninja: wprowadzenie do programowania z wykorzystaniem TDD: projekt obejmuje utworzenie komponentu React+Redux do komunikacji z Websocket.
9. TDD
describe('My React Component', () => {
it('renders a number passed through a prop', () => {
const wrapper = render(<Component prop={2}/>,
document.getElementById('app'));
expect(wrapper.find('span').text()).toEqual('2');
});
});
10. TDD
import { shallow, mount } from 'enzyme';
describe('My React Component', () => {
it('renders a number passed through a prop', () => {
const wrapper = shallow(<Component prop={2}/>);
expect(wrapper.find('span').text()).toEqual('2');
});
it('renders a number passed through a prop', () => {
const connect = jest.fn();
const wrapper = mount(<Component onconnect={connect}/>);
expect(connect).toBeCalled();
});
});
11. TDD
▸ Instalacja paczek
▸ yarn add enzyme
▸ yarn add react-addons-test-utils
▸ Test dla komponentu licznika osób na stronie
▸ Counter component displays a number passed to a prop
▸ Counter component displays 0 if props hasn’t been passed
▸ Komponent licznika
ZADANIE 1 - PIERWSZY KOMPONENT I TESTY
http://airbnb.io/enzyme/docs/api/index.html
13. REDUX
CZYM JEST REDUX?
Redux jest przewidywalnym kontenerem stanu aplikacji JS.
TRZY ZASADY
‣ Single source of truth
‣ Stan jest tylko do odczytu
‣ Zmiany wykonujemy za pomocą „czystych” funkcji
20. CONTAINER
▸ „pomost” pomiędzy komponentem, a reduxem
▸ umożliwia użycie z reduxem już istniejących komponentów bez potrzeby
ingerowania w ich kod
▸ ułatwia separację zadań
▸ pobieranie/przetwarzanie danych
▸ prezentacja danych
CZYM JEST KONTENER?
28. TESTOWANIE ZACHOWANIA KOMPONENTÓW
▸ Komponent wyświetlający aktualny stan połączenia z socketem (connected,
not-connected, connecting)
▸ Komponent pozwalający wykonać akcję podłączenia się do systemu
▸ Akcje i reducery do komunikacji z socketem
▸ Pamiętamy o testach :)
ZADANIE 4 - PRZYGOTOWANIE DO IMPLEMENTACJI KOMUNIKACJI Z SOCKETEM
{
"socket": {
"status": "connected"
}
}
30. WEBSOCKET
OD CZEGO ZACZYNAMY ?
const ws = new WebSocket(url);
const ws = new WebSocket(process.env.REACT_APP_SOCKET_URL);
PRZECHOWYWANIE ADRESU SERWERA
REACT_APP_SOCKET_URL=ws://localhost:8080