В дополнение к учебнику по Реакту, Шуту и Ферменту.Вот ссылка на код .
Вот тест:
import React from 'react';
import { mount, shallow } from 'enzyme';
import { Loot } from './Loot';
describe('Loot', () => {
const mockFetchBitcoin = jest.fn();
let props = { balance: 10, bitcoin: {} };
let loot = shallow(<Loot {...props} />);
it('renders properly', () => {
expect(loot).toMatchSnapshot();
});
describe('when mounted', () => {
beforeEach(() => {
props.fetchBitcoin = mockFetchBitcoin;
loot = mount(<Loot {...props} />);
});
it('dispatches the `fetchBitcoin()` method it receives from props', () => {
expect(mockFetchBitcoin).toHaveBeenCalled();
});
});
describe('when there are valid bitcoin props', () => {
beforeEach(() => {
props = { balance: 10, bitcoin: { bpi: { usd: { rate: '1,000' } } } };
loot = shallow(<Loot {...props} />);
});
});
it('displays the correct bitcoin value', () => {
expect(loot.find('h3').text()).toEqual('Bitcoin balance: 0.01');
});
// it('displays the correct bitcoin value', () => {
// expect(loot.find('h3').text()).toEqual('Bitcoin balance: ');
// });
});
Вот код, который тестируется:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { fetchBitcoin } from "../actions/bitcoin";
export class Loot extends Component {
componentDidMount() {
this.props.fetchBitcoin();
}
computeBitcoin() {
const { bitcoin } = this.props;
if (Object.keys(bitcoin).length === 0) return '';
return this.props.balance / parseInt(bitcoin.bpi.USD.rate.replace(/,/g,''), 10);
}
render() {
return(
<h3>Bitcoin balance: {this.computeBitcoin()}</h3>
)
}
}
export default connect(state => state, { fetchBitcoin })(Loot);
Получение следующегосообщение об ошибке в командной строке:
CMD Line
Кроме того, это сообщение об ошибке появляется в браузере:
TypeError: Невозможно преобразоватьне определено или ноль для объекта