시가총액: $2.1424T 2.26%
거래량(24시간): $72.7271B -52.49%
공포와 탐욕 지수:

15 - 극도의 공포

  • 시가총액: $2.1424T 2.26%
  • 거래량(24시간): $72.7271B -52.49%
  • 공포와 탐욕 지수:
  • 시가총액: $2.1424T 2.26%
암호화
주제
암호화
소식
cryptostopics
비디오
최고 암호화

언어 선택

언어 선택

통화 선택

암호화
주제
암호화
소식
cryptostopics
비디오

Hardhat을 사용하여 스마트 계약을 테스트하는 방법은 무엇입니까?

Hardhat is an Ethereum development environment that streamlines smart contract testing with tools like Mocha and Chai, ensuring reliable deployment.

2025/07/26 23:15

Hardhat이란 무엇이며 왜 스마트 계약 테스트에 사용합니까?

Hardhat은 개발자가 스마트 계약을 효율적으로 컴파일, 배포, 디버그 및 테스트 할 수있는 이더 리움 개발 환경입니다. Hardhat Network 로 알려진 로컬 블록 체인 환경을 제공하여 Mainnet 또는 Ropsten과 ​​같은 실제 이더 리움 네트워크의 동작을 모방하여 테스트 목적으로 이상적입니다.

개발자가 Hardhat을 선호하는 주요 이유 중 하나는 유연성과 풍부한 플러그인 생태계 때문입니다. Mocha 로 단위 테스트를 작성하거나 Assertions를 위해 Chai 사용 또는 내장 도구로 디버깅을하든 Hardhat은 전체 Smart Contract Development Lifecycle을 간소화합니다. 이렇게하면 계약 로직이 라이브 네트워크에 배포하기 전에 계약 로직이 올바르게 동작을 할 때 특히 유용합니다.

개발 환경 설정

테스트를 시작하기 전에 적절한 환경을 설정해야합니다.

  • Node.js 설치 : Node.js (버전 14.x 이상) 및 NPM이 설치되어 있는지 확인하십시오.
  • 프로젝트 초기화 : 프로젝트 디렉토리에서 npm init -y 실행하여 package.json 파일을 만듭니다.
  • HardHat 설치 : NPM 설치를 실행하여 프로젝트에 Hardhat을 추가하려면 npm install --save-dev hardhat .
  • HardHat 구성 파일 작성 : npx hardhat 실행하고 'JavaScript 프로젝트 작성'을 선택하여 hardhat.config.js 파일을 생성하십시오.

이 설정이 완료되면 스마트 계약서 작성 및 테스트를 시작할 수 있습니다.

테스트를위한 기본 스마트 계약 작성

테스트에 하드 하트를 사용하는 방법을 보여 주려면 간단한 견고 계약을 고려해 봅시다.

 // contracts/Token.sol pragma solidity ^0.8.0; 계약 토큰 {

mapping(address => uint256) public balances; function transfer(address to, uint256 amount) external { require(balances[msg.sender] >= amount, 'Insufficient balance'); balances[msg.sender] -= amount; balances[to] += amount; } function mint(address account, uint256 amount) external { balances[account] += amount; }

}

이 기본 토큰 계약에는 토큰 전송 및 마이닝 기능이 포함됩니다. 목표는 이러한 기능이 Hardhat 의 테스트 프레임 워크를 사용하여 다른 시나리오에서 예상대로 작동하는지 테스트하는 것입니다.

테스트 환경 구성

테스트를 작성하기 전에 프로젝트 구조가 테스트를 지원하는지 확인하십시오.

  • contracts/ 폴더에 견고 계약을 배치하십시오.
  • 테스트 파일을 test/ 디렉토리에 저장하십시오.
  • 필요한 경우 hardhat.config.js 업데이트하십시오 (예 : 네트워크 또는 플러그인 추가).

최소 구성 예는 다음과 같습니다.

 // hardhat.config.js module.exports = { solidity: '0.8.0', };

이 설정을 사용하면 MochaChai를 사용하여 테스트를 작성하고 실행할 준비가되었습니다.

Mocha와 Chai를 사용한 테스트 작성

Hardhat은 인기있는 JavaScript 테스트 프레임 워크 인 Mocha 와 Assertion Library 인 Chai 와 완벽하게 통합됩니다.

test/ 디렉토리에서 테스트 파일을 작성하여 시작하십시오.

 // test/token-test.js const { expect } = require('chai'); 설명 ( '토큰 계약', function () { 토큰하자; Hardhattoken을하자; 소유자에게하자; addr1을하자;

이전에 (Async function () {

Token = await ethers.getContractFactory('Token'); [owner, addr1] = await ethers.getSigners(); hardhatToken = await Token.deploy(); await hardhatToken.deployed();

});

( '총 공급을 소유자에게 할당해야한다', Async function () {

await hardhatToken.mint(owner.address, 100); const ownerBalance = await hardhatToken.balances(owner.address); expect(ownerBalance).to.equal(100);

});

it ( '계정간에 토큰을 전송해야합니다', async function () {

await hardhatToken.mint(owner.address, 100); await hardhatToken.transfer(addr1.address, 50); const addr1Balance = await hardhatToken.balances(addr1.address); expect(addr1Balance).to.equal(50);

});

it ( '발신자가 충분한 토큰이 없으면 실패해야합니다', async function () {

const initialOwnerBalance = await hardhatToken.balances(owner.address); await expect( hardhatToken.transfer(addr1.address, 1) ).to.be.revertedWith('Insufficient balance'); expect(await hardhatToken.balances(owner.address)).to.equal(initialOwnerBalance);

}); });

각 테스트 사례는 Chai를 사용하여 예상 결과를 주장합니다. beforeEach Hook는 모든 테스트마다 새로운 배치를 보장하여 테스트 사례 간의 간섭을 방지합니다.

Hardhat으로 테스트를 실행합니다

테스트가 작성되면 실행하는 것이 간단합니다.

  • 프로젝트 루트 디렉토리에서 터미널을 엽니 다.
  • 명령 npx hardhat test 실행하십시오.

출력은 통과 및 실패 사례를 포함하여 각 테스트의 결과를 보여줍니다. 테스트가 실패하면 Hardhat은 문제를 신속하게 식별하는 데 도움이되는 자세한 오류 메시지를 표시합니다.

보다 세분화 된 제어를 위해서는 파일 경로를 추가하여 특정 테스트 파일을 실행할 수 있습니다.

 npx hardhat test test/token-test.js

이를 통해 전체 테스트 스위트를 다시 실행하지 않고 특정 계약 행동에 집중할 수 있습니다.


자주 묻는 질문

Q : 견고성없이 Hardhat을 사용할 수 있습니까? 예, Hardhat은 주로 견고성을 위해 설계되었지만 커뮤니티 지원이 다를 수 있지만 Vyper 와 같은 다른 EVM 호환 언어와 함께 사용할 수 있습니다.

Q : Hardhat에서 실패한 테스트를 디버그하려면 어떻게해야합니까? @nomiclabs/hardhat-waffle 또는 Hardhat 런타임 환경 (HRE) 에서 console.log를 사용하여 테스트 실행 중에 변수 값을 인쇄하십시오. 또한 트랜잭션 영수증을 검사하고 테스트 출력에 제공된 이유를 되돌립니다.

Q : Hardhat을 사용하여 계약 업그레이드를 테스트 할 수 있습니까? 예, Hardhat은 @OpenZeppelin/HardHat-Upgrades 와 같은 플러그인을 통해 프록시 패턴을 지원하므로 업그레이드 가능한 계약을 현지에서 시뮬레이션하고 테스트 할 수 있습니다.

Q : Hardhat에서 테스트를 위해 Mocha와 Chai의 대안이 있습니까? MochaChai는 널리 채택되었지만 Jest 와 같은 다른 테스트 프레임 워크를 추가 구성과 통합 할 수 있지만 MochaChai 의 기본 지원 및 문서는 더 성숙합니다.

부인 성명:info@kdj.com

제공된 정보는 거래 조언이 아닙니다. kdj.com은 이 기사에 제공된 정보를 기반으로 이루어진 투자에 대해 어떠한 책임도 지지 않습니다. 암호화폐는 변동성이 매우 높으므로 철저한 조사 후 신중하게 투자하는 것이 좋습니다!

본 웹사이트에 사용된 내용이 귀하의 저작권을 침해한다고 판단되는 경우, 즉시 당사(info@kdj.com)로 연락주시면 즉시 삭제하도록 하겠습니다.

관련 지식

Bybit에서 BTC 거래를 위해 선형 및 역 무기한 계약 중에서 선택하는 방법은 무엇입니까?

Bybit에서 BTC 거래를 위해 선형 및 역 무기한 계약 중에서 선택하는 방법은 무엇입니까?

2026-06-06 02:54:55

계약 정산 메커니즘 1. Bybit의 선형 무기한 계약은 USDT로 정산됩니다. 즉, 모든 손익 계산, 마진 요구 사항 및 청산 기준액이 스테이블코인 단위로 표시됩니다. 2. 역영구 계약은 BTC 자체에 정산되므로 모든 거래는 거래자의 BTC 잔액에 직접적으로 영향을 ...

헌팅 중지 및 스푸핑과 같은 선물 시장 조작을 식별하고 방지하는 방법은 무엇입니까?

헌팅 중지 및 스푸핑과 같은 선물 시장 조작을 식별하고 방지하는 방법은 무엇입니까?

2026-06-07 14:20:10

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 2020년 ...

일일 최대 손실 한도를 설정하기 위해 Bybit에서 위험 관리 규칙을 설정하는 방법은 무엇입니까?

일일 최대 손실 한도를 설정하기 위해 Bybit에서 위험 관리 규칙을 설정하는 방법은 무엇입니까?

2026-06-04 16:40:15

계정 수준 손실 한도 구성 1. 이중 인증을 사용하여 웹 또는 모바일 애플리케이션을 통해 Bybit 계정에 로그인하세요. 2. "자산" 섹션으로 이동한 후 왼쪽 메뉴에서 "위험 관리"를 선택합니다. 3. "일일 손실 한도&q...

마진 요구 사항을 줄이기 위해 Binance에서 포트폴리오 마진 모드를 활성화하는 방법은 무엇입니까?

마진 요구 사항을 줄이기 위해 Binance에서 포트폴리오 마진 모드를 활성화하는 방법은 무엇입니까?

2026-06-05 04:59:43

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 블록당 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 20...

열린 선물 포지션을 닫지 않고 Binance에서 Bybit로 이전하는 방법은 무엇입니까?

열린 선물 포지션을 닫지 않고 Binance에서 Bybit로 이전하는 방법은 무엇입니까?

2026-06-04 03:59:47

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 2020년 ...

미국에서 암호화폐 선물 거래 수익에 따른 세금 영향을 어떻게 처리합니까?

미국에서 암호화폐 선물 거래 수익에 따른 세금 영향을 어떻게 처리합니까?

2026-05-29 18:19:59

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 블록 보상을 통해 새로운 단위가 도입되는 2,100만 코인의 고정 공급 한도를 시행합니다. 2. 210,000블록마다(대략 4년마다) 블록 보상이 절반으로 줄어듭니다. 이 프로세스를 절반으로 줄입니다. 3....

Bybit에서 BTC 거래를 위해 선형 및 역 무기한 계약 중에서 선택하는 방법은 무엇입니까?

Bybit에서 BTC 거래를 위해 선형 및 역 무기한 계약 중에서 선택하는 방법은 무엇입니까?

2026-06-06 02:54:55

계약 정산 메커니즘 1. Bybit의 선형 무기한 계약은 USDT로 정산됩니다. 즉, 모든 손익 계산, 마진 요구 사항 및 청산 기준액이 스테이블코인 단위로 표시됩니다. 2. 역영구 계약은 BTC 자체에 정산되므로 모든 거래는 거래자의 BTC 잔액에 직접적으로 영향을 ...

헌팅 중지 및 스푸핑과 같은 선물 시장 조작을 식별하고 방지하는 방법은 무엇입니까?

헌팅 중지 및 스푸핑과 같은 선물 시장 조작을 식별하고 방지하는 방법은 무엇입니까?

2026-06-07 14:20:10

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 2020년 ...

일일 최대 손실 한도를 설정하기 위해 Bybit에서 위험 관리 규칙을 설정하는 방법은 무엇입니까?

일일 최대 손실 한도를 설정하기 위해 Bybit에서 위험 관리 규칙을 설정하는 방법은 무엇입니까?

2026-06-04 16:40:15

계정 수준 손실 한도 구성 1. 이중 인증을 사용하여 웹 또는 모바일 애플리케이션을 통해 Bybit 계정에 로그인하세요. 2. "자산" 섹션으로 이동한 후 왼쪽 메뉴에서 "위험 관리"를 선택합니다. 3. "일일 손실 한도&q...

마진 요구 사항을 줄이기 위해 Binance에서 포트폴리오 마진 모드를 활성화하는 방법은 무엇입니까?

마진 요구 사항을 줄이기 위해 Binance에서 포트폴리오 마진 모드를 활성화하는 방법은 무엇입니까?

2026-06-05 04:59:43

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 블록당 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 20...

열린 선물 포지션을 닫지 않고 Binance에서 Bybit로 이전하는 방법은 무엇입니까?

열린 선물 포지션을 닫지 않고 Binance에서 Bybit로 이전하는 방법은 무엇입니까?

2026-06-04 03:59:47

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 2020년 ...

미국에서 암호화폐 선물 거래 수익에 따른 세금 영향을 어떻게 처리합니까?

미국에서 암호화폐 선물 거래 수익에 따른 세금 영향을 어떻게 처리합니까?

2026-05-29 18:19:59

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 블록 보상을 통해 새로운 단위가 도입되는 2,100만 코인의 고정 공급 한도를 시행합니다. 2. 210,000블록마다(대략 4년마다) 블록 보상이 절반으로 줄어듭니다. 이 프로세스를 절반으로 줄입니다. 3....

모든 기사 보기

User not found or password invalid

Your input is correct