如何测试函数是否返回而不执行任何操作

问题描述 投票:0回答:1

我正在编写一套 Jest 测试,出现了以下问题。如何测试函数在收到无效参数时是否简单返回?例如,我想测试下面的函数

changeAge
如果收到不是整数的
newAge
id
是否会立即返回。

function changeAge (id, newAge) {
  const isWholeNumber = num => Number.isInteger(newAge) && newAge >= 0
  if (!isWholeNumber(id) || !isWholeNumber(newAge)) {
    return
  } 

  const person = getPerson(id)
  person.age = newAge
}

在此示例中,测试中无法检索人员数据来验证年龄属性是否已更改。

javascript unit-testing testing jestjs
1个回答
0
投票

您的函数称为

changeAge
。它不叫
changeAgePerhaps
🙂。

如果函数无法执行其所宣传的功能,则应抛出错误(或返回指示成功/错误的

Result
类型)。

接受错误并假装一切正常,你就是在为消费者埋下麻烦。现在已经不清楚调用是否成功了。

如果您发现很难测试它在理想条件下是否有效,您的消费者也会面临这个困难。

IMO 是时候重新考虑这是否真的是你想要的方式了。

© www.soinside.com 2019 - 2024. All rights reserved.