问题
I beginning to try jasmine and I want to use the toThrowError() function but my test does not want to succeed.
I have one function where I throw an error:
test.service.ts
test(list:{}){
if(list == null){
throw new TypeError();
}
else{
// do something...
}
}
And my test :
it('shall throw an error', inject()
[
TestService
],
(
testService: TestService
) => {
let test = testService.test(null);
expect(test).toThrowError(TypeError);
}
);
And my test fails with an Uncaught TypeError (when I call it I'm doing it in a try catch).
回答1:
You should expect a function, that calls your function with null
, to throw an error. Right now you're expecting the result of calling the function to throw an error, which isn't happening.
expect(() => testService.test(null)).toThrowError(TypeError);
回答2:
You might have to throw the error from the spy like this here.
You were expecting even before throwing the error
spyOn(foo, "setBar").and.throwError("quux");
来源:https://stackoverflow.com/questions/40727581/cant-seem-to-catch-error-when-using-jasmine-tothrowerror