Jasmine toThrowError失败,消息“错误:实际不是函数”

时间:2018-01-18 13:07:25

标签: javascript node.js unit-testing jasmine

我正在构建一个Jasmine规范并编写toThrowError测试。

 it("Should give time travel error", () => {
        const errorMsg = Logger.getLogsBetweenDates( { 
              fromDate : new Date("2017-01-06"),
              toDate : new Date("2017-01-05")});

        expect(errorMsg).toThrowError("Time travel error: fromDate must be befor toDate");
});

我得到“错误:实际不是一个功能”,没有额外的细节。

  • 那是Actual
  • Logger.getLogsBetweenDates函数严重抛出错误,测试总是失败。我做错了什么?

1 个答案:

答案 0 :(得分:3)

  

那是什么?

顾名思义,Actual是包含测试函数实际结果的变量。你测试的功能实际上是什么回来了。

然后,Jasmine获取Actual值并将其与您的expect值进行比较。 当您看到源代码here时,您会更容易理解。

它发生在代码中,因为Logger.getLogsBetweenDates抛出错误,errorMsg没有结果;因此Actualundefinedexpect函数将undefined与错误消息进行比较。

  

我做错了什么?

您需要调用expect函数中的 测试函数,如下所示:

it("Should give time travel error", () => {    
     expect(() => {
             Logger.getLogsBetweenDates( { 
                  fromDate : new Date("2017-01-06"),
                  toDate : new Date("2017-01-05")})
            ).toThrowError("Time travel error: fromDate must be befor toDate");
});

如图所示here