Security News
The Risks of Misguided Research in Supply Chain Security
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
@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.
2.0.1
FAQs
Test-agnostic assertion library for ROBLOX.
We found that @rbxts/expect demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.