У меня есть такой код в компоненте:
export class VehiclesComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [],
};
autoBind(this);
}
componentDidMount () {
this.fetchData();
}
fetchData() {
const {
query,
filter,
hasAccess,
value2,
value,
value3,
name,
topics,
} = this.props;
const { data } = this.state;
if (value || value2) {
return DataService.getCars(
filter,
hasAccess,
name,
topics,
).then((cars) => {
this.setState({
data: [...data, ...cars],
});
});
} else if (value3) {
return DataService.getBuses(
filter,
hasAccess,
query,
).then((buses) => {
this.setState({
data: [...data, ...buses],
});
});
}
};
render() {
return(...)
}
};
Моя проблема в том, что я не знаю, как правильно проверить, какая служба была вызвана в зависимости от пропущенных реквизитов (значение, значение2 или значение3). Я хочу проверить, были ли вызваны DataService.getBuses или DataService.getCars. Я пытался издеваться над этим сервисом:
import DataService from '../../services/DataService';
jest.mock("../../services/DataService");
DataService.mockImplementation(() => {
return {
getCars: () => Promise.resolve([])
}
});
Но мои тесты все еще не пройдены, у меня есть
TypeError: Невозможно прочитать свойство 'then' из неопределенного
35 |
36 | componentDidMount() {
> 37 | DataService.getCars().then(cars => {});