0

所以我正在尝试为我的 REST API(建立在 Express 和 Mongoose 之上)编写测试,但我遇到了一些麻烦。

我遵循了很多示例和教程,这表明我下面的解决方案应该可以工作,但事实并非如此——我得到了一个Error: global leak detected: path

似乎导致它的线路是.post( '/api/invoices' )- 但我不知道为什么。

var app = require("../app").app,
    request = require("supertest");

describe("Invoice API", function() {

    it( "GET /api/invoices should return 200", function (done) {
        request(app)
            .get( '/api/invoices' )
            .expect( 200, done );
    });

    it( "GET /api/invoices/_wrong_id should return 500", function (done) {
        request(app)
            .get( '/api/invoices/_wrong_id' )
            .expect( 500, done );
    });

    it( "POST /api/invoices should return 200", function (done) {
        request(app)
            .post( '/api/invoices' )
            .set( 'Content-Type', 'application/json' )
            .send( { number: "200" } )
            .expect( 200, done );
    });

});
4

1 回答 1

5

发生的事情是您的代码中的某个地方缺少您的var声明。Mocha 足够聪明,可以在您的整个项目中检测到这一点,而不仅仅是您的测试文件。

如,您可能正在这样做:

path = require('path');

代替

var path = require('path');

或者甚至...

var fs = require('fs')     //<--- notice the missing comma
    path = require('path');

当您不声明变量时,它们会附加到全局范围。在 Node.jsglobal中是window.

于 2012-08-23T14:36:24.693 回答