为什么不是我的超测调用链?
Why won't my supertest calls chain?
它从来没有击中内部调用,所以done()
没有被调用,我的Mocha测试超时了。为什么会这样?
testUsers.forEach(function(loggedInUser) {
var describeStr;
if (loggedInUser && loggedInUser.username === 'a') {
describeStr = 'Tangos API (role: user)';
}
else if (loggedInUser && loggedInUser.username === 'admin') {
describeStr = 'Tangos API (role: admin)';
}
else {
describeStr = 'Tangos API (not logged in)';
}
describe(describeStr, function() {
var id;
beforeEach(function(done) {
if (!loggedInUser) {
return done();
}
agent
.post('/users')
.send(loggedInUser)
.end(function(err, res) {
console.log('err: ', err); // null
console.log('res.text: ', res.text); // correct
agent
.post('/tangos')
.send(testTango)
.end(function(err, result) {
console.log('inner'); // never hits here
if (err) {
return done(err);
}
return done(); // never hits here, so mocha tests time out
})
;
})
;
});
使用async也不工作:
async.series([
function() {
agent
.post('/users')
.send(loggedInUser)
.end(function(err, res) {
console.log('err: ', err); // null
console.log('res.text: ', res.text); // correct
})
;
}, function() {
agent
.post('/tangos')
.send(testTango)
.end(function(err, result) {
console.log('inner'); // never hits here
})
;
}
], done);
我在这里看到两个可能的问题。首先,你的async系列缺少每个函数中需要的回调。
async.series([
function(callback) {
agent
.post('/users')
.send(loggedInUser)
.end(function(err, res) {
console.log('err: ', err); // null
console.log('res.text: ', res.text); // correct
callback(); // Need to call the callback here.
})
;
}, function(callback) {
agent
.post('/tangos')
.send(testTango)
.end(function(err, result) {
console.log('inner'); // never hits here
callback(); // Need to call callback here too.
})
;
}
], done);
我用我自己的端点运行了这个确切的测试,它工作得很好。
第一个代码片段看起来不错,对我来说工作得很好。我敢说你在它有机会完成之前就已经超时了。缺省情况下,超时时间为2000ms。2个API调用不会在2秒内完成,这是有道理的。要增加超时时间,只需输入
this.timeout(5000);
相关文章:
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 当在文档中拖动mouseup/mouseleve时,我想调用我的Ajax请求
- 为什么没有调用我的流错误处理程序
- JQuery$.ajax()发布数据以调用我的控制器中的方法
- 如何通过Javascript调用我的PHP文件
- 为什么不是't调用我的函数
- 角度js 我无法动态调用我的按钮
- 我可以在这个例子中立即调用我的函数,而不是通过匿名函数包装它吗?
- 如何获取调用我的函数的元素的 ID、类或 HTML 标记
- 做一个按钮的onclick事件可以调用我的python代码
- 无法在我的 Android 应用程序中从 Javascript 调用我的 Java 类
- 如何从这个特定的上下文中调用我的JavaScript函数
- 单击表单提交按钮不会调用我的 JS 函数
- element.innerHTML 无法调用我的 javascript 函数
- 如何防止恶意代码调用我的 JavaScript
- 点击从JQUERY调用我的函数
- 我可以't在使用AJAX之后调用我的onclickjavascript函数
- 为什么didTransition不调用我的jquery
- 调用我的obj函数不是正确的方法吗
- 如何调用我的jQuery函数,使其在我的document.ready函数中运行