setTimeout 不适用于 node.js
setTimeout not working with node.js
我正在编写 mocha 测试用例来测试以下步骤。我打算打一个 API 电话,等 30 分钟后再打另一个 API。我正在使用一个内部节点 API 来调用 REST APIs 来编写这个测试用例。但出于某种原因,setTimeout
没有等待给定的毫秒数。
有人可以帮我吗?
describe('Checkout - ', function() {
before(function() {
lapetus = test.Lapetus;
});
it('Get purchase contract after session is expired [C123]', function(done) {
this.timeout(180000000);
lapetus.run(function() {
// create customer
......
// create new cart and add one item
......
// create new contract with empty cart id
.......
var pc_id =....;
// wait for 30 minutes for the session to expire
console.log('wait... ' + new Date);
this.setTimeout(getPC(lapetus,pc_id), 18000000);
console.log('ok... ' + new Date);
done();
});
});
var getPC = function(lapetus, pc_id){
// get newly created purchase contract and verify session expired message throws
.....
......
};
});
它不会等待 30 分钟。我输入的回调(getPC
方法)会立即执行。
感谢任何帮助。
谢谢
您的回调会立即执行,因为您当时正在调用它。
将其更改为this.setTimeout(function() { getPC(lapetus,pc_id); }, 18000000);
,以便您要执行的内容在setTimeout
调用的函数中。
** 编辑 **
关于我最后的评论。您应该将 "ok..." 移到您放在 setTimeout
中的函数中。这将导致 "ok..." 在调用 getPC
之前立即执行。
this.setTimeout(function() {
console.log('ok... ' + new Date);
getPC(lapetus,pc_id)
}, 18000000);
重要的是要了解 setTimeout
只会启动一个计时器,稍后将执行您的代码。 setTimeout
将启动该计时器,而不是等待它完成。一旦完成启动该计时器,它将移动到下一位代码。
我正在编写 mocha 测试用例来测试以下步骤。我打算打一个 API 电话,等 30 分钟后再打另一个 API。我正在使用一个内部节点 API 来调用 REST APIs 来编写这个测试用例。但出于某种原因,setTimeout
没有等待给定的毫秒数。
有人可以帮我吗?
describe('Checkout - ', function() {
before(function() {
lapetus = test.Lapetus;
});
it('Get purchase contract after session is expired [C123]', function(done) {
this.timeout(180000000);
lapetus.run(function() {
// create customer
......
// create new cart and add one item
......
// create new contract with empty cart id
.......
var pc_id =....;
// wait for 30 minutes for the session to expire
console.log('wait... ' + new Date);
this.setTimeout(getPC(lapetus,pc_id), 18000000);
console.log('ok... ' + new Date);
done();
});
});
var getPC = function(lapetus, pc_id){
// get newly created purchase contract and verify session expired message throws
.....
......
};
});
它不会等待 30 分钟。我输入的回调(getPC
方法)会立即执行。
感谢任何帮助。
谢谢
您的回调会立即执行,因为您当时正在调用它。
将其更改为this.setTimeout(function() { getPC(lapetus,pc_id); }, 18000000);
,以便您要执行的内容在setTimeout
调用的函数中。
** 编辑 **
关于我最后的评论。您应该将 "ok..." 移到您放在 setTimeout
中的函数中。这将导致 "ok..." 在调用 getPC
之前立即执行。
this.setTimeout(function() {
console.log('ok... ' + new Date);
getPC(lapetus,pc_id)
}, 18000000);
重要的是要了解 setTimeout
只会启动一个计时器,稍后将执行您的代码。 setTimeout
将启动该计时器,而不是等待它完成。一旦完成启动该计时器,它将移动到下一位代码。