Ethereum- Tutorial -OpenZeppelin – Viết Unit Test Smart Contract

Trong loạt bài viết này, Biastek giới thiệu cách triển khai Ethereum blockchain với sự hỗ trợ của thư viện OpenZepplin. Hướng dẫn này được thực hiện dựa trên nội dung của OpenZeppelin.

Series bài viết này bao gồm các nội dung:

Trong phần 2:  Viết Unit Test cho Smart Contract chúng ta thực hiện các bước như sau:

  • Cài đặt môi trường
  • Cài đặt thư viện mocha
  • Viết Unit test đơn giản

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

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *