我目前正在测试使用memoization + recursion的Fibonacci算法.
function memoization(num, hash = {'0': 0, '1':1}) {
if (!hash.hasOwnProperty(num)) {
hash[num] = memoization(num-1,hash) + memoization(num-2,hash);
}
return hash[num];
}
Run Code Online (Sandbox Code Playgroud)
我想在Jest中测试函数的memoization方面,以确保函数正确使用哈希并且不执行冗余工作:
test('is never run on the same input twice', ()=>{
fib.memoization = jest.fn(fib.memoization);
fib.memoization(30);
expect(allUniqueValues(fib.memoization.mock.calls)).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
但是,mock.calls仅报告使用初始参数值调用此函数一次,并且不跟踪其他递归调用.有任何想法吗?