
Product
Introducing Socket Firewall Enterprise: Flexible, Configurable Protection for Modern Package Ecosystems
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.
@rbxts/expect
Advanced tools
Test-agnostic assertion library for ROBLOX.
import { expect } from "@rbxts/expect";
import t from "@rbxts/t";
enum Sport {
Basketball,
Soccer,
Football
}
expect(5).to.be.a.number().that.equals(5);
expect("Daymon").to.have.the.substring("day");
expect("Mom").to.be.a.string().that.has.a.sizeOf(3);
expect(new Vector3(1, 2, 3)).to.equal(new Vector3(1, 2, 3));
expect({
name: "Daymon",
age: 24
}).to.equal({
name: "Daymon",
age: 24
});
expect(Sport.Basketball).to.be.the.enum(Sport, "Basketball");
expect("Football").to.be.the.enum(Sport);
expect(1).to.be.anyOf([1, 2, 3]);
expect([]).to.be.empty();
expect([1,2,3]).to.include(1);
expect([1,2,3]).to.be.an.array();
expect([1,2,3]).to.be.an.arrayOf("number");
expect([1,2,3]).to.have.the.size(3);
expect({ name: "Daymon" }).to.be.an.object().but.not.an.array();
expect(new Vector3(1,2,3)).to.be.an.instanceOf("Vector3");
expect("string").to.be.a.typeOf(t.string);
Install expect with your preferred package manager.
npm install @rbxts/expect
pnpm add @rbxts/expect
yarn add @rbxts/expect
expect is a test-agnostic assertion library for ROBLOX, enabling assertions in tests or server-side code without test dependencies; with a focus on more descriptive failure messages.
expect also provides a variety of common matchers out of the box, with full support for adding your own.
expect comes packages with common matchers that you'll find in most modern assertion libraries; that were previously missing from popular roblox libraries.
expect(1).to.be.anyOf([1, 2, 3]);
expect([]).to.be.empty();
expect([1,2,3]).to.include(1);
Matchers return themselves, so you can write long chainable checks on values.
expect([1,2,3]).to.be.an.array()
.that.is.not.empty()
.and.includes(1)
.but.does.not.include(4)
In typescript, the distinction between an object and an array is pretty black and white, while in lua, this distinction is usually lost.
expect attempts to rectify this by providing a variety of helper methods for checking arrays- and ensuring failure outputs for array values are formatted correctly.
Expected '{"name": "Daymon"}' to be an array, but it had a non number key 'name' (string)
Expected '[1,2,3]' to be an array of type 'string', but there was an element that was a 'number'
Index: 1
Value: 1
Expected '[1,2]' to deep equal '[1]', but there were extra elements
Expected: '[1]'
Actual: '[1,2]'
Extra Elements: '[2]'
expect comes with first-class support for user-defined enums.
Expected '5' (number) to be a valid enum of '(First | Second | Third)'
Expected 'Basketball' (enum/number) to be any of '["Football", "Soccer"'
With the power of proxies, you can perform checks on your tables- and get their paths populated in your failure messages.
Expected parent.cars to be empty, but it had 2 elements.
parent.cars: '["Tesla","Civic"]'
Get more out of your failure messages, no matter what you're checking.
Expected '{"name": "Daymon"}' to be an array, but it had a non number key 'name' (string)
Easily add your custom methods, or custom properties to use with expect.
You can even publish a library of them!
By taking advantage of the @rbxts/deep-equal library, expect has full support for comparing nested object and roblox data-types.
Since @rbxts/expect is test-agnostic, you can take full advantage of it outside of tests.
import { expect } from "@rbxts/expect";
import { remotes } from "./remotes";
import { saves } from "./saves";
import { pets } from "./data";
remotes.purchasePet.connect(async (player, petId) => {
const data = saves.get(player);
const pet = pets.get(petId);
expect(data.money, "You don't have enough money!").to.be.gte(pet.cost);
data.money -= pet.cost;
data.pets.push(pet);
data.save();
return "Pet purchased!";
});
So you're ready to get started with expect!
You can either checkout our Quick Start guide, or jump straight into our API Reference.
If you're interested in contributing to expect, give the CONTRIBUTING doc a read.
FAQs
Test-agnostic assertion library for ROBLOX.
The npm package @rbxts/expect receives a total of 115 weekly downloads. As such, @rbxts/expect popularity was classified as not popular.
We found that @rbxts/expect demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.

Product
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.