我很困惑我是否应该在函数完成执行后调用done()
或return
。我知道调用done意味着我必须将它作为参数传递给函数。会选择拨打return
而不是done()
的哪些实例?
即。
var foo = 2;
it('returns 2 on completion', function(done) {
expect(foo).toEqual(2);
done();
});
或
var foo = 2;
it('returns 2 on completion', function() {
expect(foo).toEqual(2);
return;
})
答案 0 :(得分:1)
您使用done()
回调还是仅仅返回取决于您正在使用的API。在各种异步上下文中都需要done()
回调。在我的头顶:
next()
而不是done()
)callback()
而不是done()
)在所有这些情况下,done()
回调是必要的,因为他们需要做的工作不能在return
之前完成。例如,测试可能包括随机超时,Express中间件可能会发出网络请求等等。
重要提示:每个函数都会返回。 done()
回调是一种惯例,当return
不足以因为它发生得太快时,你会使用该约定。