gpt4 book ai didi

javascript - 为什么在使用 Jasmine 测试异常时需要不同的语法?

转载 作者:行者123 更新时间:2023-11-30 15:12:26 26 4
gpt4 key购买 nike

我是 Jasmine 的新手,如果这是一个愚蠢的问题,我深表歉意。

我有一个这样的测试......

it("should calculate factorial 5", function() {
expect(MathsUtils.fact(5)).toBe(120);
});

这很好用。如果你传递一个负数,我的 fact 函数会抛出一个异常,所以我尝试用下面的代码来测试它......

it("should throw an exception when passed -1", function() {
expect(MathsUtils.fact(-1)).toThrow("n! does not exist for negative numbers");
});

然而,这失败了。经过一番搜索,我发现如果我把这个测试改成这样......

it("should throw an exception when passed -1", function() {
expect(function() { MathsUtils.fact(-1); }).toThrow("n! does not exist for negative numbers");
});

……它过去了。但是,如果我以类似的方式更改我的第一个测试...

it("should calculate factorial 5", function() {
expect(function() { MathsUtils.fact(5); }).toBe(120);
});

...它失败了。

为什么两个测试需要不同的语法?两者似乎都不起作用。

正如我所说,我是 Jasmine 的新手,所以如果文档中涵盖了这一点,请为我指明正确的方向,因为我看不到任何解释。

最佳答案

在例子中

expect(MathsUtils.fact(-1))

fact expect 被调用之前被评估,因此它无法捕获异常,

在哪里

expect(function(){MathsUtils.fact(-1)})

expect 正在执行并且可以捕获异常,因为传递的是函数指针而不是已计算的值

关于javascript - 为什么在使用 Jasmine 测试异常时需要不同的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44913981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com