关于jest:Jest-测试框架使用的学习笔记

46次阅读

共计 2401 个字符,预计需要花费 7 分钟才能阅读完成。

Jest Tutorial for Beginners: Getting Started With JavaScript Testing

Jest 是一个 JavaScript 测试运行器,即用于创立、运行和构建测试的 JavaScript 库。

Jest 作为 NPM 包公布,您能够将其装置在任何 JavaScript 我的项目中。Jest 是当今最风行的测试运行器之一,也是 React 我的项目的默认抉择。

Setting up the project

与每个 JavaScript 我的项目一样,您须要一个 NPM 环境(确保在您的零碎上装置了 Node)。创立一个新文件夹并应用以下命令初始化我的项目:

mkdir getting-started-with-jest && cd $_
npm init -y

接着:

npm i jest –save-dev

让咱们也配置一个 NPM 脚本来从命令行运行咱们的测试。关上 package.json 并配置一个名为 test 的脚本来运行 Jest:

"scripts": {"test": "jest"},

Specifications and test-driven development

作为开发人员,咱们都喜爱创意自在。然而,在大多数状况下,当波及到庄重的事件时,您没有那么多特权。

咱们必须遵循标准,即对要构建的内容的书面或口头形容。

在本教程中,咱们从项目经理那里失去了一个相当简略的标准。一个超级重要的客户端须要一个 JavaScript 函数来过滤一个对象数组。

对于每个对象,咱们必须查看一个名为“url”的属性,如果该属性的值与给定的术语匹配,那么咱们应该在后果数组中蕴含匹配的对象。

作为一名精通测试的 JavaScript 开发人员,您心愿遵循测试驱动开发,这是一种在开始编码之前强制编写失败测试的学科。

默认状况下,Jest 心愿在您的我的项目文件夹中名为 tests 的文件夹中找到测试文件。创立新文件夹:

mkdir tests

接下来在 tests 中创立一个名为 filterByTerm.spec.js 的新文件。您可能想晓得为什么扩展名蕴含 .spec。这是从 Ruby 借用的约定,用于将文件标记为给定性能的标准。

Test structure, and a first failing test

describe("Filter function", () => {// test stuff});

咱们的第一个敌人是 describe,一个蕴含一个或多个相干测试的 Jest 办法。每次你开始为一个性能编写一套新的测试时,都将它包装在一个 describe 块中。如您所见,它须要两个参数:一个用于形容测试套件的字符串,以及一个用于包装理论测试的回调函数。

接下来咱们将遇到另一个名为 test 的函数,它是理论的测试块:

describe("Filter function", () => {test("it should filter by a search term (link)", () => {// actual test});
});

这里 describe 的类型是 jest.Describe, 该函数承受两个输出参数,其类型别离为字符串和 jest.EmptyFunction

而 jest.EmptyFunction, 定义很简略:

type EmptyFunction = () => void;

此时咱们已筹备好编写测试。请记住,测试是输出、性能和预期输入的问题。首先让咱们定义一个简略的输出,一个对象数组:

describe("Filter function", () => {test("it should filter by a search term (link)", () => {
    const input = [{ id: 1, url: "https://www.url1.dev"},
      {id: 2, url: "https://www.url2.dev"},
      {id: 3, url: "https://www.link3.dev"}
    ];
  });
});

接下来,咱们将定义预期后果。依据标准,被测函数应排除 url 属性与给定搜索词不匹配的对象。

例如,咱们能够期待一个蕴含单个对象的数组,给定“链接”作为搜索词:

describe("Filter function", () => {test("it should filter by a search term (link)", () => {
    const input = [{ id: 1, url: "https://www.url1.dev"},
      {id: 2, url: "https://www.url2.dev"},
      {id: 3, url: "https://www.link3.dev"}
    ];

    const output = [{id: 3, url: "https://www.link3.dev"}];
  });
});

当初咱们已筹备好编写理论测试。咱们将应用 expect 和一个 Jest 匹配器来查看咱们虚构的(目前)函数在调用时是否返回预期后果。

这是测试:

expect(filterByTerm(input, "link")).toEqual(output);

残缺的代码:

describe("Filter function", () => {test("it should filter by a search term (link)", () => {
    const input = [{ id: 1, url: "https://www.url1.dev"},
      {id: 2, url: "https://www.url2.dev"},
      {id: 3, url: "https://www.link3.dev"}
    ];

    const output = [{id: 3, url: "https://www.link3.dev"}];

    expect(filterByTerm(input, "link")).toEqual(output);

  });
});

执行命令行:npm test
测试通过:

测试代码的 coverage:

npm test — –coverage

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

正文完
 0