Javascript 为什么jasmine expect不验证抛出的错误?

Javascript 为什么jasmine expect不验证抛出的错误?,javascript,jasmine-node,Javascript,Jasmine Node,我有一个函数抛出一个我正在测试的错误。以下是函数: parse: function(input) { var results = {}; var that = this; input.forEach(function(dependency) { var split = dependency.split(": "); var lib = split[0]; var

我有一个函数抛出一个我正在测试的错误。以下是函数:

parse: function(input) {
        var results = {};       
        var that = this;
        input.forEach(function(dependency) {
            var split = dependency.split(": ");
            var lib = split[0];
            var depen = split[1];       
            if(depen === undefined) {
                throw new Error('Invalid input. Requires a space after each colon.')
            }
            results[lib] = depen;
        });
        return results;
    }
当我测试这个函数时,我点击了错误代码,希望验证是否抛出了错误。以下是我的测试代码:

var invalidInput = ['Service1: ', 'Service2:stuff'] 
expect(manager.parse(invalidInput)).toThrowError();
但我的测试失败了。这是我的堆栈跟踪:

Failures:

  1) dependency.js input should require a space after each colon as specified by requirements
   Message:
     Error: Invalid input. Requires a space after each colon.
   Stacktrace:
     Error: Invalid input. Requires a space after each colon.
    at /Users/name/Development/sight/dependency.js:49:11
    at Array.forEach (native)
    at Object.module.exports.parse (/Users/name/Development/sight/dependency.js:44:9)
    at null.<anonymous> (/Users/name/Development/sight/spec/dependency.spec.js:34:12)
故障:
1) dependency.js输入应在每个冒号后按要求指定一个空格
信息:
错误:输入无效。每个冒号后面都需要一个空格。
堆栈跟踪:
错误:输入无效。每个冒号后面都需要一个空格。
at/Users/name/Development/sight/dependency.js:49:11
at Array.forEach(本机)
在Object.module.exports.parse(/Users/name/Development/sight/dependency.js:44:9)
在空。(/Users/name/Development/sight/spec/dependency.spec.js:34:12)

我正在使用
jasmineexpect
测试抛出的错误。我做错了什么?

查看
到下面的错误
以要求参数。尝试设置参数:可以是预期的错误消息或类型,也可以是两者

expect(manager.parse(invalidInput)).toThrowError('Invalid input. Requires a space after each colon.');
要忽略错误消息,您可以使用
toThrow
。发件人:


您需要将函数作为参数与
toThrow
tothrower
一起传递给
expect

var invalidInput = ['Service1: ', 'Service2:stuff'] 
expect(function () { manager.parse(invalidInput); }).toThrow();


那没用。我犯了这个错误<代码>类型错误:当我使用
toThrow('无效输入。每个冒号后需要一个空格。')时,对象[Object Object]没有方法“tothrower”。
确实有效。@jhamm My bad。。。不带参数的匹配器只调用
toThrow
;-)我使用了你的
expect
语句,得到了相同的错误。
toThrow
对我有效,但当我使用
tothrower
时,我总是得到:“tothrower不是一个函数”。知道这是从哪里来的吗?
var invalidInput = ['Service1: ', 'Service2:stuff'] 
expect(function () { manager.parse(invalidInput); }).toThrow();
var invalidInput = ['Service1: ', 'Service2:stuff'] 
expect(function () { manager.parse(invalidInput); }).toThrowError(Error);