diff --git a/lib/test.js b/lib/test.js index f0798eb4..5a4171e3 100644 --- a/lib/test.js +++ b/lib/test.js @@ -122,6 +122,15 @@ Test.prototype.end = function(fn){ var server = this._server; var end = Request.prototype.end; + if (!fn) { + return new Promise(function (resolve, reject) { + self.end(function (err, res) { + if (err) { return reject(err); } + resolve(res); + }); + }); + } + end.call(this, function(err, res){ if (err) return fn(err); if (server) return server.close(assert); diff --git a/package.json b/package.json index 486f7119..7e544ce9 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "methods": "1.1.0" }, "devDependencies": { + "es6-promise": "1.0.0", "express": "3.1.0", "mocha": "1.19.0", "should": "3.3.1" diff --git a/test/supertest.js b/test/supertest.js index d470906d..878e7b2f 100644 --- a/test/supertest.js +++ b/test/supertest.js @@ -1,3 +1,4 @@ +require('es6-promise').polyfill(); var request = require('..') , https = require('https') @@ -228,6 +229,21 @@ describe('request(app)', function(){ }); }); + describe('.end()', function() { + it('should return a promise of the callback', function() { + var app = express(); + var test = request(app); + + app.get('/', function(req, res){ + res.send('supertest FTW!'); + }); + + return test + .get('/') + .end(); + }); + }); + describe('.expect(status[, fn])', function(){ it('should assert the response status', function(done){ var app = express();