Jestjs 用jest测试一个简单函数

Jestjs 用jest测试一个简单函数,jestjs,Jestjs,我想用Jest测试一个简单的函数: // src > filterByTerm.js function filterByTerm(inputArr, searchTerm) { if (!searchTerm) throw Error("searchTerm cannot be empty"); if (!inputArr.length) throw Error("inputArr cannot be empty"); // new line const rege

我想用Jest测试一个简单的函数:

// src > filterByTerm.js
function filterByTerm(inputArr, searchTerm) {
    if (!searchTerm) throw Error("searchTerm cannot be empty");
    if (!inputArr.length) throw Error("inputArr cannot be empty"); // new line

    const regex = new RegExp(searchTerm, "i");
    return inputArr.filter(function(arrayElement) {
      return arrayElement.url.match(regex);
    });
 }
 module.exports = filterByTerm;

 // filterByTerm.spec.js

const filterByTerm = require("../src/filterByTerm");

describe("Filter function", () => {

   test("it should output error", () => {
        const input = [
          { id: 1, url: "https://www.url1.dev" },
          { id: 2, url: "https://www.url2.dev" },
          { id: 3, url: "https://www.link3.dev" }
        ];
        expect(filterByTerm(input, "")).toThrowError();
      });
 });
我的问题是,为什么这次考试不及格?如何从笑话中捕捉错误


谢谢

我相信你应该这样做

if (!searchTerm) throw new Error("searchTerm cannot be empty");


您可以进一步阅读。

您需要更改函数,因此请尝试以下方法

常量输出=[{id:3,url:https://www.link3.dev}]; 期望=>{ 输入 }.Tothrowerr

并将功能更改为此

if (!searchTerm) throw Error("searchTerm cannot be empty");


if (!inputArr.length) throw Error("inputArr cannot be empty");

尝试在另一个函数调用中包装expect函数:

而不是:

expect(filterByTerm(input, "")).toThrowError(errorMessage);
尝试:

其中errorMessage是您抛出的任何错误

expect(filterByTerm(input, "")).toThrowError(errorMessage);
expect(() => filterByTerm(input, "")).toThrow(errorMessage);