Can't seem to catch error when using Jasmine t

2019-09-04 18:02发布

问题:

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");