测试断言中应使用常量还是直接引用值?
三种商品价格断言方式的取舍分析
先逐个拆解三种写法的优劣势:
直接写死数值
expect(price).toBe(20);优点是一眼能看到预期价格,非常直观。但缺点也很明显:如果mock里的价格后续更新,你得手动修改这个硬编码的数值,大型项目里mock数据变动频繁的话,很容易漏改,导致测试用例失效。
直接引用mock深层路径
expect(price).toBe(orderMock.data.user.order.price);好处是mock数据更新后,测试用例不用同步修改,能自动跟上变化。但过长的嵌套路径可读性太差,一旦mock的结构调整(比如层级改名、增减),这里会直接报错,调试时得逐层排查路径问题,效率很低。
定义中间变量
const expectedPrice = orderMock.data.user.order.price; expect(price).toBe(expectedPrice);这种写法是最优解:既继承了和mock联动的优势,又通过
expectedPrice这个变量名让代码意图更清晰。如果后续mock结构变化,只需要修改变量赋值的那一行,所有用到这个变量的断言都不用动,维护成本大幅降低。而且变量名还能起到注释的作用,哪怕刚接手项目的人也能快速理解这行断言的目的。
总结下来,优先选第三种写法;如果是一次性的简单测试,且mock数据几乎不会变动,第一种也可以用;第二种尽量避免,除非是临时调试的场景。
内容的提问来源于stack exchange,提问作者eugenedrvnk
相关产品推荐
相关产品推荐

