Plaisanterie renvoie “Erreur de Réseau” lorsque vous faites une demande authentifiée avec axios
Cela semble un peu bizarre pour moi. Je suis en train de tester un réel (ie. véritable réseau) demande à la Plaisanterie.
Ce sont les scénarios testés:
- Test d'une API externe (fixateur.io) sans les en-têtes de <--- Cela fonctionne
- Test local de l'API serveur avec des en-têtes <--- Cela ne fonctionne PAS
- Test même API, avec les en-têtes de
node
terminal <--- Cela fonctionne
Quelle pourrait être la raison derrière ce comportement? Et quelle est la solution?
//This WORKS
test('testing no headers', () => {
return axios.get('http://api.fixer.io/latest')
.then( res => console.log(res) )
});
//This DOES NOT work
test('testing no headers', () => {
return axios.get('http://localhost:3000/users/4/profile',
{headers:{authorization:`Bearer ${mytoken}`}})
.then( res => console.log(res) )
});
//...
//Node Terminal
//This WORKS
> axios.get('http://localhost:3000/users/4/profile',
{headers:{authorization:`Bearer ${mytoken}`}})
.then( res => console.log(res) )
Vous devez vous connecter pour publier un commentaire.
Que c'est drôle,que l'axios utilisé XMLHttpRequest en primaire,et la requête ajax ne peut pas l'accès à l'ensemble du domaine,de sorte que votre test a échoué ,de sorte que vous pouvez laissez vos code passer par l'axios adaptateur.
La Raison par axios/defaults.js
Le changement de Solution axios adaptateur http
Le changement de Solution plaisanterie testURL dans le paquet.json
ensuite, le test peut être l'accès http via ajax
testURL
paramètre dans le package.json. J'ai eu une vieille réglagelocalhost:8080
dont j'ai oublié, en train de changer àlocalhost:3000
t de le faire fonctionner. Je vais essayer de comprendre commentJest
utilise cette conflictuelletestURL
param...about:blank
,j'ai essayé de changer ladocument.url
mais pas avec succès,uniquement viatestURL
option peut changer l'ajaxorigin
url.Il peut être une Plaisanterie problème de configuration. J'ai résolu de forcer le "nœud" comme la blague de l'environnement dans le paquet.json:
"plaisanterie": {
"testEnvironment": "nœud"
}
voir docs: https://facebook.github.io/jest/docs/configuration.html#testenvironment-string
Plaisanterie vous permet de définir un fichier de script d'installation. Ce fichier sera nécessaire avant tout le reste et vous donne une chance de modifier l'environnement dans lequel les tests sont exécutés. De cette façon, vous pouvez désactiver XMLHttpRequest avant axios est chargé et le type de carte évalués depuis les importations sont hissés. https://facebook.github.io/jest/docs/configuration.html#setuptestframeworkscriptfile-string
Cela a fonctionné pour moi:
paquet.json
__tests__/setup.js
setup.js
doit être déplacé hors de la__tests__
dossier sinon vous obtiendrez une erreur que le test a échoué danssetup.js
fichier