In blockchain Ethereum with OpenZeppelin library series article, Biastek would like to show 4 parts with the contents in below list. The content of this guideline com from OppenZeppelin .
This Series include:
- Part 1: Install OpenZeppelin and Ganache, Compile và Deploy Smart Contract, Interact với Web3
- Part 2: Write an Unit Test for Smart Contract
- Part 3: Connect to Public Blockchain ( testnet) with Infura API
- Part 4: Upgradeabe Smart Contract
Part 2: write Unit Test for Smart Contract we follow 3 steps
- Install environemnt
- Install mocha library
- Write simple unit test
Việc sử dụng Public blockchain (mainnet) để test thì quá tốn kém, trong khi sử dụng public blockchain (testnet) thì tốc độ qua chậm. Do đó, OpenZeppelin hỗ trợ cho chúng ta một thư viện Test Envrioment, đây là một JavaScript thư viện giúp tạo ra local blockchain đơn giản hỗ trợ trong việc testing
Cài đặt thư viện “Test Environment” như câu lệnh bên dưới
$ npm install –save-dev @openzeppelin/test-environment
Cài đặt thư viện Mocha
$ npm install –save-dev mocha chai
Viết Unitest đặt trong thư mục test/Box.test.js
// test/Box.test.js
// Load dependencies
const { accounts, contract } = require(‘@openzeppelin/test-environment’);
const { expect } = require(‘chai’);
// Load compiled artifacts
const Box = contract.fromArtifact(‘Box’);
// Start test block
describe(‘Box’, function () {
const [ owner ] = accounts;
beforeEach(async function () {
// Deploy a new Box contract for each test
this.contract = await Box.new({ from: owner });
});
// Test case
it(‘retrieve returns a value previously stored’, async function () {
// Store a value – recall that only the owner account can do this!
await this.contract.store(13, { from: owner });
// Test if the returned value is the same one
// Note that we need to use strings to compare the 256 bit integers
expect((await this.contract.retrieve()).toString()).to.equal(13);
});
});
Trong file package.json thêm vào scritp như bên dưới
“scripts”: {
“test”: “oz compile && mocha –exit –recursive test”
}
Test unit test bằng câu lệnh bên dưới
$ nmp test
Done !!! Như vậy chúng ta đã hoàn thành Unit Test đơn giản sử dụng thư viện của OpenZeppelin
Blockchain Ethereum – Ví dụ về hàm Delegatecall trong solidity
Blockchain Ethereum (P4) – Kết Nối Các Node Sử Dụng Bootnode
Blockchain Ethereum (P3) – Cài Đặt Private Blockchain trên nền tảng Ethereum
Install web3 and nodejs
Sử dụng Virtual Box
Đọc sách 2021