超测+快车不会失败
Supertest + Express won't fail
这或多或少是 supertest test express middleware
的重复
但一年后,我想我会开始一个新问题。
var express = require('express');
var request = require('supertest');
var app1 = express();
app1.get('/myapp', function (req, res) {
res.send(200, { name: 'myapp' });
});
request = request(app1);
it('should fail', function () {
request
.get('/hahahahahahahaha')
.expect(123);
});
据我所知,那总是会错误地通过。路径错误并期待不同的状态代码这一事实并不重要。
而且 - 更一般地(没有 Express),它看起来总是通过,还有:
it('should fail', function () {
request('http://thisdoesnotexist.mydomain')
.get()
.expect(200);
});
这也不行:
it('should fail', function () {
request('http://thisdoesnotexist.mydomain')
.get()
.expect(200)
.end(function (err, res) {
if (err) {
throw err;
}
});
});
有没有想过为什么会发生这种情况,或者如何实际测试这种情况?
对于超级测试,您需要以某种方式终止链。
expect
会将完成的回调作为第二个参数,您可以为此使用内置的 mocha 回调。像这样:
describe('potato', function() {
it('should fail', function(done) {
request
.get('/hahahahahahahaha')
.expect(123, done);
});
});
像这样指定 done
选项将指示 mocha 等到收到您的回复后再进行下一个测试。
不同的是参数:done
describe('XXX', function() {
it('XXX', function() {
// always passing
})
})
describe('YYY', function(done) {
it('YYY', function() {
// always passing
})
})
describe('ZZZ', function() {
it('ZZZ', function(done) {
// normal
})
})
这或多或少是 supertest test express middleware
的重复但一年后,我想我会开始一个新问题。
var express = require('express');
var request = require('supertest');
var app1 = express();
app1.get('/myapp', function (req, res) {
res.send(200, { name: 'myapp' });
});
request = request(app1);
it('should fail', function () {
request
.get('/hahahahahahahaha')
.expect(123);
});
据我所知,那总是会错误地通过。路径错误并期待不同的状态代码这一事实并不重要。
而且 - 更一般地(没有 Express),它看起来总是通过,还有:
it('should fail', function () {
request('http://thisdoesnotexist.mydomain')
.get()
.expect(200);
});
这也不行:
it('should fail', function () {
request('http://thisdoesnotexist.mydomain')
.get()
.expect(200)
.end(function (err, res) {
if (err) {
throw err;
}
});
});
有没有想过为什么会发生这种情况,或者如何实际测试这种情况?
对于超级测试,您需要以某种方式终止链。
expect
会将完成的回调作为第二个参数,您可以为此使用内置的 mocha 回调。像这样:
describe('potato', function() {
it('should fail', function(done) {
request
.get('/hahahahahahahaha')
.expect(123, done);
});
});
像这样指定 done
选项将指示 mocha 等到收到您的回复后再进行下一个测试。
不同的是参数:done
describe('XXX', function() {
it('XXX', function() {
// always passing
})
})
describe('YYY', function(done) {
it('YYY', function() {
// always passing
})
})
describe('ZZZ', function() {
it('ZZZ', function(done) {
// normal
})
})