阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

    教程列表

    数据库
    抓包专区
    测试专区

    Deno 代码测试

    测试

    Deno 有一个内置的测试器,可以用来测试 JavaScript 或 TypeScript 代码。

    编写测试

    要定义测试,需要使用要测试的名称和函数调用 Deno.test

    Deno.test("hello world", () => {
      const x = 1 + 2;
      if (x !== 3) {
        throw Error("x should be equal to 3");
      }
    });
    
    

    https://deno.land/std/testing 上有一些有用的断言实用程序,可以简化测试:

    import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
    
    Deno.test("hello world", () => {
      const x = 1 + 2;
      assertEquals(x, 3);
    });
    
    

    异步函数

    您还可以通过传递一个测试函数来测试异步代码,该函数返回一个 promise。 为此,您可以在定义函数时使用 async 关键字:

    Deno.test("async hello world", async () => {
      const x = 1 + 2;
    
      // await some async task
      await delay(100);
    
      if (x !== 3) {
        throw Error("x should be equal to 3");
      }
    });
    
    

    资源和异步操作清理器

    Deno 中的某些操作在资源表(Deno 和 Linux 类比)中创建资源。 这些资源应该在使用完后关闭。

    对于每个测试定义,测试器会检查此测试中创建的所有资源是否已关闭,以防止资源“泄漏”。

    默认情况下,这对所有测试都是启用的,但可以通过在测试定义中将 sanitizeResources 布尔值设置为 false 来禁用。

    对于异步操作(如与文件系统交互)也是如此。

    测试器检查您在测试中启动的每个操作是否在测试结束之前完成。

    默认情况下,这对所有测试都是启用的,但可以通过在测试定义中将 sanitizeps 布尔值设置为 false 来禁用。

    Deno.test({
      name: "leaky test",
      fn() {
        Deno.open("hello.txt");
      },
      sanitizeResources: false,
      sanitizeOps: false,
    });
    
    

    忽略测试

    有时您希望忽略基于某种条件的测试(例如您只希望在 Windows 上运行测试)。

    为此,您可以使用 ignore 测试定义中的布尔值。

    如果它被设置为 true,则测试将被跳过。

    Deno.test({
      name: "do macOS feature",
      ignore: Deno.build.os !== "darwin",
      fn() {
        doMacOSFeature();
      },
    });
    
    

    运行测试

    要运行测试,请使用包含您测试函数的文件调用 deno test

    deno test my_test.ts
    

    您还可以省略文件名,在这种情况下,当前目录(递归)下所有与通配符 {*_,}test.{js,ts,jsx,tsx} 匹配的测试将会被运行。

    如果传递一个目录,则该目录中与此 glob 匹配的所有文件将运行。

    卖前端学习教程

    只需几十元,就能买到培训班的内部教程!开启高薪之路!

    零基础小白阿里P7的教程都有!

    同时长期收购所有培训班的前端教程

    目录
    目录