所以我正在尝试为我的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 );
});
});
答案 0 :(得分:5)
正在发生的事情是,您的代码中某处缺少var
声明。 Mocha非常聪明,可以在整个项目中检测到这一点,而不仅仅是测试文件。
同样,你可能会这样做:
path = require('path');
而不是
var path = require('path');
或者甚至可能......
var fs = require('fs') //<--- notice the missing comma
path = require('path');
当您未声明变量时,它们会附加到全局范围。在Node.js中,这是global
,在浏览器中是window
。