OpenZeppelin Test Helpers

Assertion library for Ethereum smart contract testing. Make sure your contracts behave as expected.
Test Helpers integrates seamlessly with OpenZeppelin Test Environment, but it also supports Truffle tests and regular web3 workflows.
Overview
Installation
npm install --save-dev @openzeppelin/test-helpers
Usage
Import @openzeppelin/test-helpers in your test files to access the different assertions and utilities.
Note: The following snippet uses OpenZeppelin Test Environment: a Truffle-based setup would work the same way.
const { accounts, contract } = require('@openzeppelin/test-environment');
const {
BN,
constants,
expectEvent,
expectRevert,
} = require('@openzeppelin/test-helpers');
const ERC20 = contract.fromArtifacts('ERC20');
describe('ERC20', function () {
const [sender, receiver] = accounts;
beforeEach(async function () {
this.value = new BN(1);
this.erc20 = await ERC20.new();
});
it('reverts when transferring tokens to the zero address', async function () {
await expectRevert(
this.erc20.transfer(constants.ZERO_ADDRESS, this.value, { from: sender }),
'ERC20: transfer to the zero address',
);
});
it('emits a Transfer event on successful transfers', async function () {
const receipt = await this.erc20.transfer(
receiver, this.value, { from: sender }
);
expectEvent(receipt, 'Transfer', {
from: sender,
to: receiver,
value: this.value,
});
});
it('updates balances on successful transfers', async function () {
this.erc20.transfer(receiver, this.value, { from: sender });
expect(await this.erc20.balanceOf(receiver))
.to.be.bignumber.equal(this.value);
});
});
Learn More
License
MIT