Javascript 如何获取被调用函数从其他函数获得的返回值?

Javascript 如何获取被调用函数从其他函数获得的返回值?,javascript,sinon,Javascript,Sinon,例如,我有两个功能: function functionOne() { var a = 1; var b = 2; var sum = a + b; return sum; } function functionTwo() { var receivedSum = functionOne(); console.log('just do something with ' + receivedSum); } 我想测试函数2,需要以某种方式获得rec

例如,我有两个功能:

function functionOne() {
    var a = 1;
    var b = 2;
    var sum = a + b;

    return sum;
}

function functionTwo() {
    var receivedSum = functionOne();
    console.log('just do something with ' + receivedSum);
}
我想测试函数2,需要以某种方式获得receivedSum的值。
可能吗?Sinon.js或其他一些库能帮我吗?

最佳实践是黑盒测试,但可以将内部函数包装到spy中,并使用以下方法检查它返回的值:

lib.js

export const libFunc=()=>“值”;
code.js

从“/lib”导入{libFunc};
导出常量func=()=>{
//…做事。。。
常量值=libFunc();
//…做更多的事情。。。
}
code.test.js

import*作为sinon从“sinon”导入;
将*作为库从“/lib”导入;
从“./code”导入{func};
测试('func',()=>{
const spy=sinon.spy(lib,'libFunc');//监视libFunc
func();//调用调用libFunc的func
expect(spy.returnValues[0]).toBe('the value');//成功
});

如果您使用的是Jest或Sinon,则可以模拟
functionOne()
以返回一些已知值,并确保测试正常运行。我不知道返回值,希望在测试中得到它。我不确定其目的。函数1总是会返回相同的结果。因此,如果您已经单独测试了它,为什么需要在Function2的范围内再次测试它。示例是人工的,实际的Function1返回不同的结果,我的测试是集成这个问题已经在这里得到了回答: