BLOCKCHAIN/Ethereum

[Ethereum] SmartContract and Solidity (2)

yuujoeng 2022. 8. 16. 21:33

1 Installing Modules

- 가나슈 라이브러리 설치 npm install mocha ganache-cli web3

- test 디렉토리 생성하고 index.test.js 파일 생성

- 각각의 라이브러리를 불러옴

- Web3는 현재 v1.x.x(비동기 가능)와 v0.x.x 버전이 나와있으므로 version1을 사용하기 위해 Web3를 명시해야 함 

 

 

2 Web3 Providers

 

- 생성자를 사용하여 Web3 인스턴스를 생성함

- 인스턴스 생성 이후 즉시 새로운 구성을 Ganache에서 실행하기 위해 공급자(Provider) 필요

- 웹서비스를 사용하는 방법으로 브라우저가 네트워크에 요청 보냄

- 공급자를 의사소통의 수단으로 사용하기 위해 코드 추가

 

 

 

 

3 Mocha

(1) Testing with Mocha

  - 모카는 일반적인 용도의 프레임워크

  - 모카를 사용해 모든 유형의 js 코드를 테스트할 수 있음

 

  - assert.equal(car.park(), 'stopped'); 로 park와 내가 생각하는 가치가 동일하다고 주장

  - assert 라이브러리는 Node 표준 라이브러리로 다양한 함수를 제공 ex.equal

 

  - test를 실행해보면 가치가 동일하여 Car가 park된 것을 볼 수 있음

  - stopped를 stoooooooped 등으로 변경하면 일치하지 않으므로 실패함

 

  - drive에 대한 내용을 vroom으로 일치하다고 주장한 뒤 실행하면 일치하므로 정상적으로 작동함

 

- 아무것도 할당되지 않은 let car; 코드 추가

- describe에서 새로운 car를 생성하지 않고 먼저 생성한 car를 재사용하도록 함

- beforeEach()로 아무것도 할당되지 않았을 때 car의 대안값을 설정하면 정상적으로 작동함

 

 

 

(2) Mocha Structure

  - 모카 파일을 가나슈는 계속해서 기억하고 있음

  - 내부의 저장된 메세지를 업데이트할 경우 Deploy로 이동하는 과정을 계속해서 반복

  - 가나슈를 통해 다른 네트워크가 아닌 내 네트워크를 사용하는 과정

  - 잠금 해제 상태로 생성되므로 액세스 하거나 키를 관리하는 과정이 필요하지 않음

 

(3) Fetching Accounts from Ganache

  - Web3 라이브러리를 통해 가나슈 네트워크에서 계정에 접근하는 방법

  - 계정리스트 받아오는 작업 후 코드 실행하면 가나슈가 네트워크에서 자동으로 인증된 계정 10개 받아옴

 

(3) Refactor to Async/Await