Blockchain Ethereum with OpenZeppelin – write Unit Test Smart Contract

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

Leave a Reply

Your email address will not be published. Required fields are marked *