0.5.16 • Published 2 years ago
@openzeppelin/test-helpers v0.5.16
OpenZeppelin Test Helpers
Assertion library for Ethereum smart contract testing. Make sure your contracts behave as expected.
- Check that transactions revert for the correct reason
- Verify that events were emitted with the right values
- Track balance changes elegantly
- Handle very large numbers
- Simulate the passing of time
Overview
Installation
npm install --save-dev @openzeppelin/test-helpers
Hardhat
Install web3
and the hardhat-web3
plugin.
npm install --save-dev @nomiclabs/hardhat-web3 web3
Remember to include the plugin in your configuration as explained in the installation instructions.
Usage
Import @openzeppelin/test-helpers
in your test files to access the different assertions and utilities.
const {
BN, // Big Number support
constants, // Common constants, like the zero address and largest integers
expectEvent, // Assertions for emitted events
expectRevert, // Assertions for transactions that should fail
} = require('@openzeppelin/test-helpers');
const ERC20 = artifacts.require('ERC20');
contract('ERC20', function ([sender, receiver]) {
beforeEach(async function () {
// The bundled BN library is the same one web3 uses under the hood
this.value = new BN(1);
this.erc20 = await ERC20.new();
});
it('reverts when transferring tokens to the zero address', async function () {
// Conditions that trigger a require statement can be precisely tested
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 }
);
// Event assertions can verify that the arguments are the expected ones
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 });
// BN assertions are automatically available via chai-bn (if using Chai)
expect(await this.erc20.balanceOf(receiver))
.to.be.bignumber.equal(this.value);
});
});
Learn More
- Head to Configuration for advanced settings.
- For detailed usage information, take a look at the API Reference.
License
0.5.16
2 years ago
0.5.14
2 years ago
0.5.15
2 years ago
0.5.13-0
3 years ago
0.5.13
3 years ago
0.5.12
3 years ago
0.5.11
3 years ago
0.5.10
3 years ago
0.5.8
3 years ago
0.5.9
3 years ago
0.5.8-rc.0
3 years ago
0.5.7
3 years ago
0.5.6
4 years ago
0.5.6-rc.0
4 years ago
0.5.5
4 years ago
0.5.5-rc.0
4 years ago
0.5.4
4 years ago
0.5.4-rc.0
4 years ago
0.5.3
4 years ago
0.5.2
4 years ago
0.5.2-rc.0
4 years ago
0.5.1
4 years ago