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

Ela*_*lad 5 javascript unit-testing node.js 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");
});
Run Code Online (Sandbox Code Playgroud)

而即时消息“错误:实际不是函数”,没有其他详细信息。

  • 那是Actual什么
  • Logger.getLogsBetweenDates函数严重抛出错误,并且测试始终失败。我究竟做错了什么?

Ela*_*lad 6

那是什么实际值?

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

然后,茉莉花将这个Actual价值与您的expect价值进行比较。当您在此处看到源代码时,更容易理解。

它在代码中发生Logger.getLogsBetweenDates是因为抛出错误,但errorMsg没有结果;因此,Actualundefined,并且 expect函数将“ an” 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");
});
Run Code Online (Sandbox Code Playgroud)

如图所示这里