我一直在编写健身webkit应用程序的服务器端。 HTTP呼叫被发送到服务器以开始基于时间的"锻炼"在申请中。我一直在使用茉莉花节点进行测试,到目前为止它一直在工作。唯一不行的是我试图使用sinon假定时器。
我遇到的问题是测试没有通过下面代码中的it语句。如果我删除clock.tick函数调用它是有效的。为什么不呢 如果时钟已被120000毫秒勾选,请从it语句继续?如果没有在get请求的.end中注释掉clock.restore(),则请求永远不会完成。我无法确定问题的确切位置(jasmine-node vs express vs supertest)。在那之后,它仍然是解决问题的问题。
到目前为止的行为
以下是一些示例代码:
var app = require('../../js/server');
var sinon = require('sinon');
var request = require('supertest');
var clock;
request = request(url + version);
describe("Active Workout REST", function(){
beforeEach(function(){
clock = sinon.useFakeTimers(new Date().getTime());
app.start();
// runs(function(){
var workoutSetup = {
workout: 'cardio',
intensity: 1
}
//sending workoutSetup
request
.post('/workout/setup')
.set('Accept', 'application/json')
.send(workoutSetup)
.end(function(err, res){
console.log("done");
});
//sending start request
request
.post('/workout')
.send({ workout: 'start'})
.set('Accept', 'text/plain')
.end(function(err, res){
console.log("done");
});
//get out of the warmup period
console.log(new Date().getTime());
clock.tick(2 * defs.MINUTES_TO_SECONDS * defs.SECONDS_TO_MS);
// });
console.log(new Date().getTime());
});
afterEach(function(){
console.log("am i here?");
clock.restore();
app.stop();
});
it("should return current parameters", function(done){
runs(function(){
request
.get('/workout/parameters/current')
.set('Accept', 'application/json')
.expect({
incline: 0,
duration_sec: 60
})
.end(function(err, res){
expect(err).toBe(null);
console.log('donee');
// clock.restore();
done();
});
});
});
});