2017-07-17 34 views
2

当使用Jest测试利用回调的异步代码时,您可以输入完成的参数,然后在测试中调用该参数。这可以让测试知道在完成测试之前等待done()函数被调用。例如,在包含done()函数的回调运行之前,此代码不会完成。Jest的回调测试如何实际工作

test('the data is peanut butter', done => { 
    function callback(data) { 
    expect(data).toBe('peanut butter'); 
    done(); 
    } 

    fetchData(callback); 
}); 

我的问题是,Jest如何知道它何时需要等待done()调用?作为测试运行的函数的参数中唯一存在的其他位置,Jest是否有检查该函数中哪些参数的方法?如果是这样怎么做?

回答

2

函数具有.length属性,返回被声明为它的参数的个数:

function test0() {} 
function test1(arg0) {} 
function test2(arg0, arg1) {} 

console.log(test0.length); // 0 
console.log(test1.length); // 1 
console.log(test2.length); // 2 

这玩笑是怎么知道您的测试处理器期望一个done回调,它将承担测试是异步。

+0

谢谢!这就说得通了。 :) – Kee