如何在JavaScript中使用Mocha和assert.throws测试参数的值

How to test the value of an argument using Mocha and assert.throws in JavaScript?

本文关键字:throws assert 测试 参数 Mocha JavaScript      更新时间:2023-09-26

我想看看一个等于"x"的值是否会导致我的函数抛出异常。我有一个单元测试,它检查一个块是否会引发异常,但我希望只有当参数="x"时才引发异常,而不是如果它只是空的。如何使用assert来完成此操作?

这里有一些代码来说明我的意思:

// Some function to check if a color is not transparent.
function checkColor(color) {
  if (color == 'transparent') {
    throw new TypeError('cant have transparent colors!');
  } else {
    return color;
  }
}

以下是断言:

assert.throws(checkColor, /cant have transparent colors!/);

现在,我知道断言将失败,因为我的函数只有在color='transparent'的情况下才会抛出异常。使用Mocha和Assert,如何根据需要测试断言?我不想只测试颜色未定义或属于某种类型。我特别想看看是否在上述特定情况下引发了异常——这是我唯一希望引发异常的情况(因为颜色为空,实际上在其他地方处理)。

assert.throw(function() { iThrowError(argument) }, Error)

现在只需确保argument=x;