- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
22小时前关门了。
Improve this question
我想检查一个函数的结果,它包含两个数之和,但没有return语句:
function sum(a,b){
var res = a+b;
return true;
}
test('sum of numbers', () => {
expect(sum(1,2)).toBe(res)
});
如何在我的测试中获得res
变量的值?
4条答案
按热度按时间1rhkuytd1#
我有一些建议给你。要获得res值,你可以尝试使用一个像JavaScript对象这样的引用类型。
另一种选择是从函数返回一个对象,其中包括需要测试的布尔值以及内部变量。
我注意到你在一篇帖子的评论中提到
这是我项目中的一个要求,我必须测试函数内部的一个内部变量值
仔细检查一下,是否有可能这个需求实际上是要求你返回局部变量并比较它,而不是一个布尔值?如果是这样,你可以按照@epascarello的答案中概述的方法。希望这能有所帮助!
hts6caw32#
测试应该是测试函数的结果。你不能访问函数内部的变量,因为变量的作用域是函数块,而不是全局的。
您的函数应该返回函数的结果,而您的测试应该测试您期望的输出。
sd2nnvve3#
像这样的测试实现细节是前端测试的反模式。您应该测试调用此函数的用户交互(例如,单击按钮)。然后,检查屏幕上呈现的文本是否是您想要的结果(例如,1+1=2)。
项目需求要求直接测试一个功能,这是完全错误的。
evrscar24#
求和函数的基本测试用例
也可以在toBe处使用toEqual。
甚至你可以检查这个职位https://jestjs.io/docs/getting-started .