diff --git a/lib/test.js b/lib/test.js index f87a3273..d22b3669 100644 --- a/lib/test.js +++ b/lib/test.js @@ -6,7 +6,7 @@ var request = require('superagent'); var util = require('util'); var http = require('http'); var https = require('https'); -var assert = require('assert'); +var deepMatch = require('deep-equal-with-regex'); var Request = request.Request; /** @@ -197,9 +197,7 @@ Test.prototype._assertBody = function(body, res) { // parsed if (typeof body === 'object' && !isregexp) { - try { - assert.deepStrictEqual(body, res.body); - } catch (err) { + if (!deepMatch(body, res.body, { regex: true })) { a = util.inspect(body); b = util.inspect(res.body); return error('expected ' + a + ' response body, got ' + b, body, res.body); diff --git a/package.json b/package.json index f021883f..b0292431 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,8 @@ }, "dependencies": { "methods": "^1.1.2", - "superagent": "^3.8.3" + "superagent": "^3.8.3", + "deep-equal-with-regex": "^1.3.0" }, "devDependencies": { "body-parser": "^1.18.3", diff --git a/test/supertest.js b/test/supertest.js index dfa90a7c..9ba6bfc3 100644 --- a/test/supertest.js +++ b/test/supertest.js @@ -544,6 +544,28 @@ describe('request(app)', function () { }); }); + it('should support embedded regular expressions', function (done) { + const app = express(); + + app.set('json spaces', 0); + + app.get('/', function(req, res) { + res.send({ foo: 'bar' }); + }); + + request(app) + .get('/') + .expect({ foo: /baz/ }) + .end(function(err, res) { + err.message.should.equal('expected { foo: /baz/ } response body, got { foo: \'bar\' }'); + + request(app) + .get('/') + .expect({ foo: /bar/ }) + .end(done); + }); + }); + it('should assert response body multiple times', function (done) { const app = express();