我已尝试this answer中的所有解决方案,但它们都不适用于我。
我正在使用jasmine v2.3.2
和jasmine-core v2.3.4
当我做这个测试时:
jasmine.DEFAULT_TIMEOUT_INTERVAL= 999999;
describe('tests content controller', function(){
//...
fit('/content should return 200',function(done){
request(app)
.get('/content?type=script')
.set('Authorization', "bearer " + requestor.token)
.set('Accept', 'application/json')
.expect(200)
.end(function (err, res) {
if (err) done.fail(err);
expect(res.statusCode).toBe(200);
console.log('got here');
console.log(jasmine.DEFAULT_TIMEOUT_INTERVAL); //prints 30000
done();
})
},999999);
我在控制台上看到请求只花了3000毫秒。我甚至看到了got here
日志。
显示超时的日志打印出30000
而非999999
,就像我期望的那样。
我的测试失败了:
Message:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
Stack:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
1 spec, 1 failure
Finished in 33.069 seconds
有一些初始设置导致大部分~30秒延迟。应用程序必须连接到多个数据库并运行beforeAll
中的describe
函数。
我怎样才能防止茉莉花这样超时呢?
答案 0 :(得分:7)
尝试在let store = inMemoryStoreCoordinator()
let mainContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
mainContext.persistentStoreCoordinator = store
let childContext = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType)
childContext.parentContext = mainContext
let q = NSOperationQueue()
let group = dispatch_group_create()
q.addOperationWithBlock {
dispatch_group_enter(group)
childContext.performBlock {
try! childContext.save()
dispatch_group_leave(group)
}
}
dispatch_group_wait(group, DISPATCH_TIME_FOREVER)
中设置jasmine.DEFAULT_TIMEOUT_INTERVAL
,因为每个beforeAll
块都会重置超时间隔:
it
另外,请记住setTimeout使用32位整数来存储幕后延迟,因此超过此值的整数值将导致溢出。看这篇文章: Infinite jasmine timeout