Truffle 테스트 방법

프동프동·2023년 1월 7일
0

Blockchain

목록 보기
4/12

truffle 테스트

test는 javascript 기반 테스트 프레임 워크인 mocha를 사용한다.

기본 구조

const counter = artifacts.require('./Counter.sol');
const assert = require('assert');

contract('Counter', async () => {
  describe('First Contract Test', async () => {
    it('Counter Test', async () => {
      const instance = await counter.deployed();
			const result = await instance.get();
      assert.equal(response, 9, '10이 나와야 해요');
    });
  });
});

컨트랙트 불러오기

const counter = artifacts.require('./Counter.sol');

컨트랙트 배포

contract();
  • 기본적으로 account[0]으로 contract를 배포한다.

설명을 위한 부분

describe();
  • describe
    • 테스트들을 구분짓고 테스트에 대해 설명하는 함수.
    • 주로 Object 명이나 function 명을 작성한다.
    • describe안에 describe를 중첩하여 사용할 수 있다.
      describe('@@@@', () => {
        describe('####', () => {
        });
      });

하나의 테스트 코드 시작

it();
  • it
    • 어떤 결과가 나와야하는지 명시한다.
    • 보통 어떤 함수의 결과로 기대되는 값(예측값)을 작성
it("Test code message, async function() {})

인스턴스 생성

const instance = await counter.deployed();

Counter Contract가 배포된 Instance를 가져온다.

get() 실행하기

const result = await instance.get();

비교하기

 assert.equal(response, 9, '10이 나와야 해요');
  • assert
    • node.js에서 기본적으로 제공하는 assertion 라이브러리
    • equal 함수는 실제로 함수가 반환하는 값과 우리가 기대하는 값이 서로 일치하는지 비교한다.
    • 다양하지 않아 외부 모듈을 사용하는 것을 추천

결과

Test 성공

> truffle test counter.test.js

Using network 'test'.

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.

  Contract: Counter
    First Contract Test
      ✔ get() Test

  1 passing (33ms)

Test 실패

> truffle test counter.test.js

Using network 'test'.

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.

  Contract: Counter
    First Contract Test
      1) get() Test
    > No events were emitted

  0 passing (38ms)
  1 failing

  1) Contract: Counter
       First Contract Test
         get() Test:
     AssertionError [ERR_ASSERTION]: 10이 나와야 해요
      at Context.<anonymous> (counter.test.js:9:14)
      at processTicksAndRejections (node:internal/process/task_queues:96:5)
profile
좋은 개발자가 되고싶은

0개의 댓글