2015-09-29 59 views
0

我是新来的测试驱动开发,并试图使用supertest来教我自己。我很困惑,为什么我不断收到错误“应用程序未定义”?从我的电话请求(应用程序),我在下面加了粗体。我试图查看文档,但似乎没有太多。我所有的线路都处于所谓的“中间件”的文件,该文件开头是这样的:SuperTest - 应用程序未定义

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(); 
     }) 

    }) 
}) 

回答

3

在你的文件的顶部,你需要定义快递和应用程序,即:

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

此外,请确保您已经安装了EXPR ESS,即通在节点的命令行:

npm install express --save 

(使用“--save”把它添加到您的package.json文件,这使得它容易保持的版本跟踪等,但还自动安装,如果其他人使用npm install来安装你的项目)。

相关问题