【问题标题】:SuperTest - App is not definedSuperTest - 未定义应用程序
【发布时间】:2015-09-29 00:18:26
【问题描述】:

我是测试驱动开发的新手,我正在尝试使用 supertest 来自学。我很困惑为什么我不断收到错误“未定义应用程序”?这是我对 request(app) 的调用,我在下面加粗了。我试图查找文档,但似乎没有太多。我所有的路由都在一个名为“中间件”的文件中,该文件的开头如下:

 var bodyParser = require('body-parser');
    var helpers = require('./helpers.js'); // our custom middleware
    var db = require('../DB/DB.js');
    var router = require('../routes.js');
    var path = require('path');
    var fs = require('fs');
    var gm = require('gm');


    module.exports = function (app, express) {}

我使用 supertest 测试中间件文件路由的实际文件:

    var chai = require('chai')
    var assert = chai.assert;
    var should = chai.should();
    var expect = chai.expect;
    var helpers = require("../config/helpers.js");
    var middleware = require("../config/middleware.js");
    // for when we eventually want to test against mock data
    var fs = require('fs');
    var path = require('path');
    var supertest = require("supertest")(middleware);

describe('middleware API', function() {


  it('responds with binary data', function(done) {
    var imagePath = path.join(__dirname, '/../assets/drawings/', userName + '.png');
    **request(app)**
      .get(imagePath)
      .expect(201)
      .expect('Content-Type', 'image.png')
      .parse(binaryParser)
      .end(function(err, res) {
        if (err) return done(err);

        // binary response data is in res.body as a buffer
        assert.ok(Buffer.isBuffer(res.body));
        console.log("res=", res.body);

        done();
      });
  });

  it('sends back one image', function(done) {
    **request(app)**
      .get('/game/')
      .expect(201)
      .expect('Content-Type', 'image.png')
      .expect('Content-Length', '1')
      .parse(binaryParser)
      .end(function(err, res) {
        if (err) return done(err);

        // binary response data is in res.body as a buffer
        assert.ok(Buffer.isBuffer(res.body));
        console.log("res=", res.body);

        done();
      })

  })
})

【问题讨论】:

    标签: javascript express mocha.js supertest


    【解决方案1】:

    在你的文件顶部你需要定义express和app,即:

    var express        = require('express'),
        app            = express();
    

    另外,请确保您已经安装了 express,即通过 node 中的命令行:

    npm install express --save
    

    (使用“--save”将其添加到您的 package.json 文件中,这样可以轻松跟踪版本等,但如果其他人使用 npm install 安装您的项目,也会自动安装)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多