Skip to content

Testing Setup

StateMesh provides testing utilities for creating isolated mesh instances, mocking actions and transactions, and asserting state.

createTestMesh

Create an isolated mesh for testing:

ts
import { createTestMesh } from "statemesh-core/testing";

const mesh = createTestMesh({
  state: {
    cart: { items: [], status: "idle", error: null }
  }
});

createTestMesh returns a TestMesh with all standard mesh methods plus test helpers.

Mock Actions

ts
mesh.mockAction("cart.addItem", (state, product) => {
  state.cart.items.push(product);
});

Mock Transaction Effects

ts
mesh.mockTransactionEffect("cart.checkout", async () => {
  throw new Error("Payment failed");
});

Mock Resources

ts
mesh.mockResource("products.list", {
  data: [{ id: "1", name: "Keyboard" }],
  params: { search: "" }
});

Assert State

ts
mesh.assertStatePath("cart.items", []);
mesh.assertStatePath("cart.status", "idle");

Assert Transaction Status

ts
mesh.assertTransactionStatus("cart.checkout", "error");

Assert Resource Status

ts
mesh.assertResourceStatus("products.list", "success");

Important Notes

TIP

createTestMesh creates an isolated instance with no persistence, sync, or DevTools. Perfect for unit tests.

Next Steps

Released under the MIT License.