deno.com

撰寫測試

在 Github 上編輯

在軟體開發中最常見的任務之一是為現有程式碼撰寫測試。Deno 內建測試執行器,使這項工作變得非常容易。

首先,我們從標準函式庫匯入 assert 語句。有很多選項,但我們在這裡只匯入最常見的選項。
import { assert, assertEquals } from "jsr:@std/assert";
使用測試執行器最簡單的方式是直接傳遞描述和回呼函式
Deno.test("assert works correctly", () => {
  assert(true);
  assertEquals(1, 1);
});
在更複雜的情況下,我們經常需要有一些設定和拆解程式碼,以及介於兩者之間的一些步驟。透過內建的測試執行器,這也很容易實現。
Deno.test("testing steps", async (t) => {
  const file = await Deno.open("example.txt", {
    read: true,
    write: true,
    create: true,
  });
  const encoder = new TextEncoder();
  const data = encoder.encode("Hello world!");

  await t.step("write some bytes", async () => {
    const bytesWritten = await file.write(data);
    assertEquals(bytesWritten, data.length);
    await file.seek(0, Deno.SeekMode.Start);
  });

  await t.step("read some bytes", async () => {
    const buffer = new Uint8Array(data.length);
    await file.read(buffer);
    assertEquals(buffer, data);
  });

  file.close();
});
預設情況下,測試執行器使其很難搬石頭砸自己的腳。對於每個測試,測試執行器都會檢查以確保在測試期間建立的所有資源都已釋放。在某些情況下,這不是有用的行為。我們可以使用更複雜的測試定義來停用此行為
Deno.test({
  name: "leaky test",
  async fn() {
    await Deno.open("example.txt");
  },
  sanitizeResources: false,
});

使用 Deno CLI 在本機執行此範例

deno test --allow-read --allow-write https://github.com/denoland/deno-docs/blob/main/examples/scripts/writing_tests.ts

您找到需要的資訊了嗎?

隱私權政策