본문 바로가기
블록체인/블록체인 서비스 개발

[이더리움개발101] Truffle Test 사용해서 검증하기

by 마고커 2022. 4. 18.


계약서를 수정시마다 매번 배포하고, Truffle Console에서 테스트하는 일은 좀 번거로울 수도 있다. 테스트 과정을 코드화 할 수 있다면, 좀 더 직관적으로 확인할 수 있을 것이다. 

truffle을 initialize(truffle init)하면 test 디렉토리가 생기는데, 안은 비어있다.  아래와 같은 javascript를 작성해서 계약서를 테스트 해 볼 수 있다. 계약서 내용은 아래 포스팅을 참조한다.

 

 

[이더리움개발101] Truffle Console 사용

Truffle의 초기화 및 배포 방법은 아래를 참조한다. npm install truffle -g > npm install ganache-cli -g 2. 설치 후 version 확인 > truffle version Truffle v5.5.7 (core: 5.5.7) G.." data-og-host="magoker..

magoker.tistory.com

 

Test용 javascript (test/lottery-test.js)

 

const { isTopic } = require("web3-utils");

const Lottery = artifacts.require("Lottery");

contract('Lottery', function([deployer, user1, user2]) {
    beforeEach(async() => {
        console.log('Before Each')
        lottery = await Lottery.new();
    })

    it('Basic test', async() => {
        console.log('Basic test');
        let owner = await lottery.owner();
        let value = await lottery.getSomeValue();

        console.log(`owner : ${owner}`);
        console.log(`value : ${value}`);
        assert.equal(10, 10)
    })
});

 

Migration할 때 계약서를 배포하지만, Test에서 굳이 그럴 필요는 없다. 위에서 beforeEach와 it함수가 있는데, beforeEach에서 계약서 instance를 생성해주고, it에서 필요한 테스트를 수행하면 된다. 참고로, 생성된 계약서를 삭제할 때는 afterEach를 작성해 주면 된다. 

 

위의 내용은 owner와 getSomeValue를 테스트하는 것으로 위 코드를 실행시키면 아래와 같은 결과를 얻는다.

 

> truffle test test/lottery-test.js
Using network 'development'.


Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.
✓ Transaction submitted successfully. Hash: 0x5d4d6c0387c182dcdc6ee50c713deec62e62bd08f0368a796971015173016156
✓ Transaction submitted successfully. Hash: 0xfaa95fa40b1f85c54a15b3a4da8f50d346431997980e6170d04b396085ce6232
✓ Transaction submitted successfully. Hash: 0x6e37578d0c7d4736211334b328f151a8a6eab4deac26dbe6e5f00819c56ce686
✓ Transaction submitted successfully. Hash: 0x4b730b2b28c500dc1f5a57e6faacce3a393a924c0833c903fa0b872bf93da9be


  Contract: Lottery
Before Each
✓ Transaction submitted successfully. Hash: 0x1aba921ef21709b588f31683a48bb8e3c07d05f4c43eb984ec1d42591ec9a43b
Basic test
owner : 0xF76c9B7012c0A3870801eaAddB93B6352c8893DB
value : 5
    ✓ Basic test


  1 passing (174ms)

 

owner와 value를 제대로 가져온 것을 확인할 수 있다. 



댓글