Я пытаюсь написать тест для реагирующего компонента, который отправляет запрос GET Fetch после установки. Тест просто должен проверить, был ли компонент рендерингом, и когда выполняется выборка, я получаю следующее: ReferenceError: fetch is not defined
. Я искал вокруг и не мог найти что-нибудь, что исправит мою проблему. Я использую jest и Test Utils для тестирования компонентов.Обратный вызов обхода в компоненте React
Мой код компонента:
export class Home extends Component {
constructor(props) {
...
}
componentDidMount() {
fetch('/some/path', {
headers: {
'Key1': 'Data1',
'Key2': Data2
}
}).then(response => {
if (response.status == 200) {
response.json().then((data) => {
this.context.store.dispatch(setAssets(data))
}
);
} else {
return (
<Snackbar
open={true}
message={"ERROR: " + str(response.status)}
autoHideDuration={5000}
/>
);
}
}).catch(e => {});
...
);
}
componentWillUnmount() {
...
}
logout(e) {
...
}
render() {
return (
<div>
<AppBar
title="Title"
iconElementLeft={
<IconButton>
<NavigationClose />
</IconButton>
}
iconElementRight={
<IconMenu
iconButtonElement={
<IconButton>
<MoreVertIcon />
</IconButton>
}
targetOrigin={{
horizontal: 'right',
vertical: 'top'
}}
anchorOrigin={{
horizontal: 'right',
vertical: 'top'
}}
>
<MenuItem>
Help
</MenuItem>
</IconMenu>
}
/>
{
this.context.store.getState().assets.map((asset, i) => {
return (
<Card
title={asset.title}
key={i+1}
/>
);
})
}
</div>
);
}
}
Home.contextTypes = {
store: React.PropTypes.object
}
export default Home;
Мой Тест Код:
var home
describe('Home',() => {
beforeEach(() => {
let store = createStore(assets);
let a = store.dispatch({
type: Asset,
assets: [{
'id': 1,
'title': 'TITLE'
}],
});
store.getState().assets = a.assets
home = TestUtils.renderIntoDocument(
<MuiThemeProvider muiTheme={getMuiTheme()}>
<Provider store={store}>
<Home />
</Provider>
</MuiThemeProvider>
);
});
it('renders the main page, including cards and appbar',() => {}
Она ошибки при попытке визуализации Home в документе.
Я пробовал fetch-mock, но это разрешает только ложные вызовы для тестирования API, которые я не пытаюсь сделать, и не издевается над вызовами извлечения в моем компоненте.
Mocking Home не работает, потому что его компонент, который я пытаюсь проверить. Если есть способ издеваться над функцией componentDidMount()
, которую я пропустил.
Мне просто нужно обходное решение для вызова извлечения. Есть идеи??
EDIT: Я использую РЕАКТ JSX для компонента и JS для теста
К сожалению, я использую Бабель, который указан в качестве ограничения для ReWire, но я попробовал это в любом случае. ** EDIT: ** Комментарии слишком малы для моего кода, размещены детали как ответ – FRZ