Escriu per cercar…

Test

S'ensenya a
Entorns de desenvolupamentVerificació i optimització de programariDAW

Setup and teardown APIs

To make testing easier, you can use these APIs to help perform setup and teardown for test cases:

  • Deno.test.beforeAll
  • Deno.test.beforeEach
  • Deno.test.afterAll
  • Deno.test.afterEach

Here’s a concrete example showing how to set up a test database:

ts
import sqlite from "node:sqlite";
import { assertEquals } from "jsr:@std/assert";

let testDb: sqlite.DatabaseSync;

// Run once before all tests
Deno.test.beforeAll(() => {
  testDb = new sqlite.DatabaseSync(":memory:");
  testDb.exec(`CREATE TABLE users (
      id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE
    );
  `);
});

// Run before each individual test
Deno.test.beforeEach(() => {
  testDb.exec("DELETE FROM users");
  const insert = testDb.prepare(
    "INSERT INTO users (name, email) VALUES (?, ?)",
  );
  insert.run("Alice", "alice@example.com");
  insert.run("Bob", "bob@example.com");
});

// Run after each individual test
Deno.test.afterEach(() => {
  // Clean up test data
  testDb.exec("DELETE FROM users");
});

// Run once after all tests
Deno.test.afterAll(() => {
  testDb.close();
});

Deno.test("should find user by email", () => {
  const query = testDb.prepare("SELECT * FROM users WHERE email = ?");
  const user = query.get("alice@example.com");
  assertEquals(user?.name, "Alice");
});

Deno.test("should create new user", () => {
  const insert = testDb.prepare(
    "INSERT INTO users (name, email) VALUES (?, ?)",
  );
  insert.run("Charlie", "charlie@example.com");

  const countQuery = testDb.prepare("SELECT COUNT(*) as count FROM users");
  const result = countQuery.get();
  assertEquals(result!.count, 3); // 2 from beforeEach + 1 new
});

Estàs llegint una vista prèvia.

Inicia sessió amb Google per llegir la pàgina completa.

Inicia sessió amb Google

Amb qualsevol compte de Google. Només et demanarem que acceptis les condicions del servei.