Ich bin neu in React/Redux und habe ein grundlegendes Beispiel implementiert, das auf der offiziellen redux-Dokumentationsseite verfügbar ist.Testen von externen Api-Aufrufen mit Jest (Abruffunktion verwendet)
Benötigen Sie Hilfe, wie ich die folgende Funktionalität testen kann, wo in einer einfachen JavaScript-Funktion eine externe API aufgerufen wird und mein Aktionsersteller derjenige ist, der diese Funktion aufruft.
Wie teste ich den API-Aufruf und meine Aktion Creator-Funktion mit Jest ??
Hier sind die Dateien, die vorhanden sind.
import fetch from 'isomorphic-fetch'
export const REQUESTS_POSTS ='REQUESTS_POSTS';
export const RECEIVE_POSTS ='RECEIVE_POSTS';
export const SELECT_SUBREDDIT ='SELECT_SUBREDDIT';
export const INVALIDATE_SUBREDDIT ='INVALIDATE_SUBREDDIT';
export function selectSubreddit(subreddit) {
return{
type:SELECT_SUBREDDIT,
subreddit
}
}
export function invalidateSubreddit(subreddit) {
return{
type:INVALIDATE_SUBREDDIT,
subreddit
}
}
function requestsPosts(subreddit) {
return{
type:REQUESTS_POSTS,
subreddit
}
}
function receivePosts(subreddit, json) {
return{
type:RECEIVE_POSTS,
subreddit,
posts:json.data.children.map(child=>child.data),
receiveAt:Date.now()
}
}
function fetchPosts(subreddit) {
return dispatch=>{
dispatch(requestsPosts(subreddit));
return fetch(`https://www.reddit.com/r/${subreddit}.json`)
.then(response=>response.json())
.then(json=>dispatch(receivePosts(subreddit,json)))
}
}
function shouldFetchPosts(state, subreddit) {
const posts = state.postsBySubreddit[subreddit];
if(!posts){
return true;
}else if(posts.isFetching){
return false;
}else{
return posts.didInvalidate
}
}
export function fetchPostsIfNeeded(subreddit) {
return (dispatch, getState) => {
if(shouldFetchPosts(getState(),subreddit)){
return dispatch(fetchPosts(subreddit))
}
}
}
Ich habe auf die oben genannte Sache gesucht, aber bekam Bibliothek verschiedene Optionen, wie mit ‚Nock‘ usw. bin ich sehr verwirrt, auf das der tatsächlichen richtige Weg, es zu testen.