測試智能合約
框架
Truffle 提供了一套標(biāo)準(zhǔn)的自動(dòng)化測試框架,這就使得測試智能合約變得簡單了。
這個(gè)框架允許你以兩種不同的方式編寫簡單和可管理的測試:
- 使用 JavaScript 編寫括享,從外部來執(zhí)行你的合約愉粤,就像應(yīng)用一樣杀迹。
- 使用 Solidity 編寫劣针,進(jìn)階的外部執(zhí)行合約校镐,適用于 bare-to-the-metal(實(shí)在不知道怎么翻譯) 場景。
兩種測試方法都有各自的優(yōu)缺點(diǎn)捺典,下面兩個(gè)板塊將會(huì)詳細(xì)討論鸟廓。
測試腳本位置
所有測測試腳本文件應(yīng)該在 ./test/
文件夾下。 truffle
只會(huì)運(yùn)行
.js .es .es6 .jsx .sol
這些后綴的腳本襟己,其他文件都會(huì)被忽略引谜。
命令
運(yùn)行所有測試腳本:
$ truffle test
指定特定文件運(yùn)行測試腳本:
$ truffle test ./path/to/test/file.js
凈室環(huán)境
Truffle 提供了一個(gè)凈室環(huán)境來運(yùn)行你的測試腳本。在針對Ganache或Truffle開發(fā)運(yùn)行測試時(shí)擎浴,
Truffle 將使用高級的快照特性员咽,以確保測試文件不會(huì)彼此共享狀態(tài)。當(dāng)與其他 Ethereum 客戶端(如go-ethereum)運(yùn)行時(shí)贮预,
Truffle 將在每個(gè)測試文件開始時(shí)重新部署所有遷移贝室,以確保您有一組新的合約要測試。
速度和可靠性方面的考慮
在運(yùn)行測試腳本的時(shí)候 Truffle Develop
和 Ganache
都比其他客戶端要快仿吞。
此外滑频,它們還包含一些特殊的特性,Truffle利用這些特性將測試運(yùn)行時(shí)間提高了近90%唤冈。
作為一個(gè)通用的工作流峡迷,我們建議您在正常的開發(fā)和測試過程中使用 Ganache 或 Truffle Develop ,
然后在您準(zhǔn)備部署到 live 或生產(chǎn)網(wǎng)絡(luò)時(shí)务傲,對 go-ethereum 或其他 Ethereum 客戶端進(jìn)行一次測試凉当。