반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- build
- xcode
- TensorFlow
- localserver
- 맥
- MachineLearning
- 네트워크
- Chrome
- avds
- linux
- androidstudio
- 센토스
- react
- 리눅스
- webpack
- unittest
- centos
- ReactNative
- IOS
- 개발
- vsCode
- picker
- PYTHON
- MAC
- Android
- node
- qunit
- VirtualBox
- jest
Archives
- Today
- Total
로메오의 블로그
[DApp] Solidity test 코드 작성하기 본문
반응형
위 포스트에서 작성한 코드를 그대로 사용하겠습니다.
테스트파일 생성
touch test/election.spec.js
test/election.spec.js
const Election = artifacts.require('./Election.sol')
contract('Election', accounts => {
it('후보자 두 명 등록하면 candidatesCount는 2명 이다.', () => {
return Election.deployed()
.then(instance => {
// 두명의 후보자를 등록합니다.
instance.addCandidate('romeoh')
instance.addCandidate('doraemong')
// candidatesCount를 반환한다.
return instance.candidatesCount()
})
.then(count => {
// count는 2 다.
assert.equal(count, 2)
})
})
})
테스트 실행
$ truffle test
테스트가 통과 되었습니다.
후보자 데이터 테스트
test/election.spec.js 에 계속 테스트를 추가합니다.
const Election = artifacts.require('./Election.sol')
contract('Election', accounts => {
....
it('후보자 정보를 검증한다.', () => {
return Election.deployed()
.then(instance => {
electionInstance = instance
// 첫번째 후보자를 반환한다.
// 위 테스트 코드에서 이미 두명의 후보자가 등록되어 있음
return electionInstance.candidates(1)
})
.then(candidate => {
assert.equal(candidate[0], 1, '첫번째 후보자 기호는 1번이다.')
assert.equal(candidate[1], 'romeoh', '첫번째 후보자 이름은 romeoh다.')
assert.equal(candidate[2], 0, '첫번째 후보자 득표는 0 이다.')
// 두번째 후보자를 반환한다.
return electionInstance.candidates(2)
})
.then(candidate => {
assert.equal(candidate[0], 2, '두번째 후보자 기호는 2번이다.')
assert.equal(candidate[1], 'doraemong', '두번째 후보자 이름은 doraemong이다.')
assert.equal(candidate[2], 0, '두번째 후보자 득표는 0 이다.')
})
})
})
테스트 실행
$ truffle test
두개의 테스트가 모두 통과 했습니다.
test/election.spec.js 전체 코드
const Election = artifacts.require('./Election.sol')
contract('Election', accounts => {
it('후보자 두 명 등록하면 candidatesCount는 2명 이다.', () => {
return Election.deployed()
.then(instance => {
// 두명의 후보자를 등록합니다.
instance.addCandidate('romeoh')
instance.addCandidate('doraemong')
// candidatesCount를 반환한다.
return instance.candidatesCount()
})
.then(count => {
// count는 2 다.
assert.equal(count, 2)
})
})
it('후보자 정보를 검증한다.', () => {
return Election.deployed()
.then(instance => {
electionInstance = instance
// 두명의 후보자를 등록합니다.
electionInstance.addCandidate('romeoh')
electionInstance.addCandidate('doraemong')
// 첫번째 후보자를 반환한다.
return electionInstance.candidates(1)
})
.then(candidate => {
assert.equal(candidate[0], 1, '첫번째 후보자 기호는 1번이다.')
assert.equal(candidate[1], 'romeoh', '첫번째 후보자 이름은 romeoh다.')
assert.equal(candidate[2], 0, '첫번째 후보자 득표는 0 이다.')
// 두번째 후보자를 반환한다.
return electionInstance.candidates(2)
})
.then(candidate => {
assert.equal(candidate[0], 2, '두번째 후보자 기호는 2번이다.')
assert.equal(candidate[1], 'doraemong', '두번째 후보자 이름은 doraemong이다.')
assert.equal(candidate[2], 0, '두번째 후보자 득표는 0 이다.')
})
})
})
반응형
'Backend > Python & Blockchain' 카테고리의 다른 글
[DApp] Solidity Front-end Election에서 후보자 읽어오기 (0) | 2019.07.07 |
---|---|
[DApp] Solidity Front-end 구동하기 (0) | 2019.07.07 |
[DApp] 후보자 등록, 확인하기 (0) | 2019.07.06 |
[DApp] Solidity 맛보기 [Smoke Test] (0) | 2019.07.06 |
[DApp] Truffle, Ganache, MetaMask 설치 (0) | 2019.07.06 |
Comments