forked from dukedaily/solidity-expert
-
Notifications
You must be signed in to change notification settings - Fork 0
/
02_单元测试.md
80 lines (61 loc) · 2.42 KB
/
02_单元测试.md
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 第2节:单元测试
涉及到revertedWith时,需要:
1. 将await写在expect外面,里面不需要写await了
2. .to.revertedWith,不是.be.revertedWith,.to.be没试过
```sh
describe('Create Offer', () => {
it.only('should faild to call createOffer directly', async () => {
let last = await getOffer(lastOffer)
await expect(last.createOffer(tokens, info)).to.revertedWith("Bazaar: permission denied")
})
})
```
3. 测试单个文件
```sh
npx hardhat test test/xxx.spec.ts
```
4. 可以使用命令行将参数传递给命令行
```sh
FORK=true npx hardhat test test/xxx.spec.ts
```
5. 单元测试使用fork
```js
/* eslint-disable no-console */
import { network, ethers, waffle } from 'hardhat'
import { Signer } from 'ethers'
// import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'
import { JsonRpcServer } from 'hardhat/types'
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'
import { JsonRpcSigner } from '@ethersproject/providers'
console.log('begin')
describe('Send Transaction test', () => {
let signer: JsonRpcSigner
let acc0: SignerWithAddress
beforeEach(async () => {
// https://etherscan.io/accounts
const ETHWHALE = '0xF977814e90dA44bFA03b6295A0616a897441aceC'
await network.provider.request({
method: 'hardhat_impersonateAccount',
params: [ETHWHALE]
})
const accounts = await ethers.getSigners()
acc0 = accounts[0]
console.log('acc0:', acc0.address)
const bal = await ethers.provider.getBalance(acc0.address)
// default balance: 10000000000000000000000, this is defined in 'test-wallets.js'
console.log('acc0 bal:', bal.toString())
signer = ethers.provider.getSigner(ETHWHALE)
})
describe('sendTransaction Test', () => {
it('should send transaction', async () => {
await signer.sendTransaction({
to: acc0.address,
value: ethers.utils.parseEther('20') // 20 ether
})
const bal = await ethers.provider.getBalance(acc0.address)
// Result: 10020000000000000000000
console.log('new acc0 bal:', bal.toString())
})
})
})
```