jha*_*amm 3 javascript jasmine-node
我有一个函数,抛出我正在测试的错误.这是功能:
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;
}
Run Code Online (Sandbox Code Playgroud)
当我测试这个函数时,我点击错误代码并想要验证是否抛出了错误.这是我的测试代码:
var invalidInput = ['Service1: ', 'Service2:stuff']
expect(manager.parse(invalidInput)).toThrowError();
Run Code Online (Sandbox Code Playgroud)
但我的测试失败了.这是我的堆栈跟踪:
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)
Run Code Online (Sandbox Code Playgroud)
我jasmine-expect用来测试抛出的错误.我究竟做错了什么?
你需要一个函数作为参数传递给expect连同toThrow或toThrowError.
var invalidInput = ['Service1: ', 'Service2:stuff']
expect(function () { manager.parse(invalidInput); }).toThrow();
Run Code Online (Sandbox Code Playgroud)
要么
var invalidInput = ['Service1: ', 'Service2:stuff']
expect(function () { manager.parse(invalidInput); }).toThrowError(Error);
Run Code Online (Sandbox Code Playgroud)