Nodejsコードのテストに関する問題を解決するには、助けが必要です。私はモカとスーパーテストを使っています。スーパーテストの実装と混同しています。それを解決する方法がわかりません。ファイルのダウンロードを自動化しようとしています。
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();
});
});
});
Expressアプリのテスト中にモカから同様のエラーを受け取りました。エラーの全文:
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)
これをExpress server.jsに追加して修正しました。つまり、サーバーオブジェクトをエクスポートします
module.exports = app
このエラーに直面しているTypeScriptユーザーは、次の2つを確認してください。
module.exports = app
( @ Collin D に感謝)import * as app from "./app"
import app from "./app"
私は同じ問題に直面していました、上記の解決策は私にとってはうまくいきませんでした、私の靴の中の誰かが親切にこの人の
server.jsでのエクスポートは
module.exports.app = app;
es6機能を使用するよりも複数のモジュールがある場合
module.exports = {
app,
something-else,
and-so-on
}
バージョン相互参照用のmy package.json
{
"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"
}
}