Skip to content

Testing framework for AssemblyScript. Compatible with WASI or Bindings

License

Notifications You must be signed in to change notification settings

JairusSW/as-test

Repository files navigation

 █████  ███████       ████████ ███████ ███████ ████████ 
██   ██ ██               ██    ██      ██         ██    
███████ ███████ █████    ██    █████   ███████    ██    
██   ██      ██          ██    ██           ██    ██    
██   ██ ███████          ██    ███████ ███████    ██    
                                                        
    AssemblyScript - v0.4.1

A lightweight testing framework for AssemblyScript.

🔹 Minimal and fast – Run your tests without unnecessary overhead.

🔹 Familiar API – Inspired by modern JavaScript testing frameworks.

🔹 Powerful mocking – Easily override functions and track calls.

🔹 Seamless CI/CD integration – Works effortlessly in automation pipelines.

🔹 Universal environment – Run your tests on any platform, runtime, or bindings.

💾 Installation

npm install as-test

Initialize your test setup with:

as-test init

This creates a test directory at assembly/__tests__/ with a sample test file.

📝 Writing Tests

Create a new test file in assembly/__tests__/, for example, math.spec.ts:

import { describe, test, expect, run } from "as-test";

describe("Math operations", () => {
  test("Addition", () => {
    expect(1 + 2).toBe(3);
  });

  test("Subtraction", () => {
    expect(5 - 2).toBe(3);
  });

  test("Multiplication", () => {
    expect(3 * 3).toBe(9);
  });
});

run();

🔍 Examples

🏗️ Mocking Functions

Use mockFn to override functions during testing:

import { mockFn } from "as-test";

// Mock console.log
mockFn<void>("console.log", (data: string): void => {
    console.log("[MOCKED]: " + data);
});

run();

Or override imported functions with mockImport.

⚒️ Setup and Teardown

Use beforeAll and afterAll to run code before and after a test is run.

import { beforeAll, afterAll } from "as-test";

beforeAll(() => {
  log("Setting up test environment...");
});

afterAll(() => {
  log("Tearing down test environment...");
});

run();

📃 Pretty Logging

Using console.log will mess up the terminal output. Instead, use the inbuilt log function:

import { log } from "as-test";

log("This is a pretty log function");

run();

Or override all existing console.log calls with log:

import { mockFn, log } from "as-test";

mockFn<void>("console.log", (data: string): void => {
    log(data);
});

run();

🔄 Running Tests in CI

To integrate as-test into your CI/CD workflow, see the example configuration.

assembly/__tests__/example.spec.ts

📃 License

This project is distributed under an open source license. You can view the full license using the following link: License

📫 Contact

Please send all issues to GitHub Issues and to converse, please send me an email at [email protected]

About

Testing framework for AssemblyScript. Compatible with WASI or Bindings

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published