1. 程式人生 > >assert.throws()函式詳解

assert.throws()函式詳解

assert.throws(block[, error][, message])

期望 block 函式丟擲一個錯誤。
如果指定 error,它可以是一個建構函式、正則表示式或驗證函式。
如果指定 message,如果 block 因為失敗而丟擲錯誤,message 會是由 AssertionError 提供的值。
驗證使用建構函式例項:

assert.throws(
    () => {
        throw new Error('Wrong value');
    },
    Error
);

使用 RegExp 驗證錯誤資訊:

assert.throws(
    () => {
        throw new Error('Wrong value');
    },
    /value/
);

自定義錯誤驗證:

assert.throws(
    () => {
        throw new Error('Wrong value');
    },
    function (err) {
        if ((err instanceof Error) && /value/.test(err)) {
            return true;
        }
    },
    'unexpected error'
);

請注意,Error 不能是字串。如果字串是作為第二個引數,那麼 error 會被假定省略,字串將會使用 message 替代。這很容易導致丟失錯誤:

// THIS IS A MISTAKE! DO NOT DO THIS!
assert.throws(myFunction, 'missing foo', 'did not throw with expected message');

// Do this instead.
assert.throws(myFunction, /missing foo/, 'did not throw with expected message');