web-dev-qa-db-fra.com

TypeError: Impossible de lire la propriété 'adresse' du supertest non défini

J'ai besoin d'aide pour résoudre mon problème de test sur les codes nodejs. J'utilise mocha et supertest. Je suis confondu avec l'implémentation dans supertest. Je ne sais pas le résoudre. J'essaie d'automatiser le téléchargement d'un fichier.

`describe('GET /entry/:entryId/file/:id/download', function(){
 it('should pass download function', function(done){
   this.timeout(15000);
   request(app.webServer)
  .get('/entry/543CGsdadtrE/file/wDRDasdDASAS/download')
  .set('Authorization', 'Bearer eyJ0eXAiOiJKV1QiLCJhbGco')
  .expect(200)
  .end(function(err, res){
  if (err) return done(err);
  console.log(err, res);
  done();
 });
});
});
9
Saitama

J'ai reçu une erreur similaire de Mocha lors du test d'une application express. Texte complet de l'erreur:

0 passing (185ms)
2 failing

1) loading express responds to /:
 TypeError: app.address is not a function
  at Test.serverAddress (test.js:55:18)
  at new Test (test.js:36:12)
  at Object.obj.(anonymous function) [as get] (index.js:25:14)
  at Context.testSlash (test.js:12:14)

2) loading express 404 everything else:
 TypeError: app.address is not a function
  at Test.serverAddress (test.js:55:18)
  at new Test (test.js:36:12)
  at Object.obj.(anonymous function) [as get] (index.js:25:14)
  at Context.testPath (test.js:17:14)

Je l'ai corrigé en l'ajoutant à mon serveur express.js, c.-à-d. Exporter l'objet serveur

module.exports = app
14
Colin D

Les utilisateurs de TypeScript, confrontés à cette erreur, vérifient deux choses:

  1. Le serveur express devrait avoir module.exports = app (merci à @Collin D )
  2. Utilisez import * as app from "./app"
    au lieu de faux import app from "./app"
5
Artru

Je faisais face au même problème, la solution ci-dessus ne fonctionnait pas pour moi, quelqu'un à ma place A gentiment suivi ce type

Les exportations dans server.js devraient être

module.exports.app = app;

Si vous avez plusieurs modules, utilisez la fonctionnalité es6  

module.exports = {
  app,
  something-else,
  and-so-on
}

mon package.json pour la version réf. croisée ..

{
  "name": "expressjs",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "mocha **/*.test.js",
    "start": "node app.js",
    "test-watch": "nodemon --exec npm test"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.16.4",
    "hbs": "^4.0.1"
  },
  "devDependencies": {
    "mocha": "^5.2.0",
    "supertest": "^3.3.0"
  }
}
1
hemant singh