是否需为确定不会触发边界情况的函数编写单元测试?
是否需要为确定参数结构的函数测试边界情况?
结论是:需要测,但目的不是为了兼容当前业务场景,而是为了给未来的代码变更和意外情况加一层防护。
具体原因有这几点:
- 业务场景的“100%确定”只是当前状态,未来大概率会变。比如后续其他开发者接手代码、业务逻辑调整,或者调用方的代码被修改,不小心传入了不符合要求的参数,这些边界测试能第一时间触发失败,帮你快速定位问题,而不是等报错出现在生产环境。
- 单元测试本身也是一种“活文档”。其他开发者看你的测试用例,就能明确知道这个函数的输入约束——比如看到空对象会触发报错,就清楚它必须接收带有
name和lastName的完整对象,不能随意传值。 - 这类测试写起来成本极低,不用复杂逻辑,只要覆盖核心边界就行。比如用Jest的话,写两个简单的测试用例就能搞定:
test('未传参数时抛出错误', () => { expect(() => getAccountName()).toThrow(); }); test('传入空对象时抛出错误', () => { expect(() => getAccountName({})).toThrow(); });
当然,你不用过度纠结覆盖所有极端情况,只要把最可能出现的意外场景(比如未传参、空对象)覆盖到就足够了。
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

