Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jasmine未捕获Try/Catch中的错误_Javascript_Angularjs_Jasmine_Karma Runner - Fatal编程技术网

Javascript Jasmine未捕获Try/Catch中的错误

Javascript Jasmine未捕获Try/Catch中的错误,javascript,angularjs,jasmine,karma-runner,Javascript,Angularjs,Jasmine,Karma Runner,我一直在使用Jasmine框架编写一些angularjs测试。我被Jasmine网站上的文档弄糊涂了 “toThrow”匹配器用于测试函数是否引发异常 如果我不包装提交的正文,Jasmine将通过以下测试 it("should not save to server if user is invalid", function () { userServiceMock.user.id = false; expect(function () { submissionServ

我一直在使用Jasmine框架编写一些angularjs测试。我被Jasmine网站上的文档弄糊涂了

“toThrow”匹配器用于测试函数是否引发异常

如果我不包装提交的正文,Jasmine将通过以下测试

it("should not save to server if user is invalid", function () {
    userServiceMock.user.id = false;
    expect(function () {
      submissionService.save(submission);
    }).toThrow();
   userServiceMock.user.id = 15;
});
我认为在没有catch子句的情况下抛出错误是不好的做法。所以我一定是把这类测试写错了。希望有人能澄清这一点


我正在使用gruntjs和grunt karma运行测试。

您将测试您的函数是否会抛出错误。为此,不能设置将向try-catch/block抛出错误的块,因为即使在函数调用的函数中抛出错误,也不会在该函数中抛出错误

如何捕获
toThrow
匹配器中的错误,并且只有在调用匹配器中的
catch
块时测试才会通过:

    try {
      actual();
    } catch (e) {
      threw = true;
      thrown = e;
    }

您将测试函数是否会抛出错误。为此,不能设置将向try-catch/block抛出错误的块,因为即使在函数调用的函数中抛出错误,也不会在该函数中抛出错误

如何捕获
toThrow
匹配器中的错误,并且只有在调用匹配器中的
catch
块时测试才会通过:

    try {
      actual();
    } catch (e) {
      threw = true;
      thrown = e;
    }

那么,我的实际代码不应该包装在try/catch结构中?是的,错误必须从jasmine matcher中捕获,否则测试失败。因此,我将对我的try/catch块进行注释以进行测试,并删除注释以执行actucl??那么我的实际代码不应该包装在try/catch结构中?是的,必须从jasmine matcher捕获错误,否则测试失败。因此,我将为测试注释我的try/catch块,并删除actucl执行的注释??