以太坊Solidity程式語言開發框架————8、測試合約
框架
Truffle使用Mocha測試框架來做自動化測試,使用Chai來做斷言。這兩個庫的結合可能讓人耳目一新,我們基於這兩者之上,提供一種方式來編譯簡單和可管理的合約自動化測試用例。
位置
測試檔案應置於./tests
目錄。Truffle只會執行以.js
,.es
,.es6
和.jsx
結尾的測試檔案,其它的都會被忽略。
測試用例
每個測試檔案至少應該包含至少一個對Mocha的describe()
函式的呼叫,詳情見Mochajs Documentation。另一種方式是使用Truffle自定義的contract()
函式,作用型別describe()
函式,但額外新增了一些特性:
- 在每一個
contract()
函式執行前,你的合約都會重部署到以太坊客戶端中,這樣測試用例會在一個乾淨狀態下執行。 contract()
函式支援傳入多個可用的帳戶做為第二個引數傳入,你可以用此來進行測試。
當你需要與你寫的合約進行互動時,使用contract()
,否則使用describe()
函式。
測試用例示例
truffle init
命令為我們提供了一個簡單的測試用例例子。它會先部署你的合約,然後執行在it()
塊中指定的測試用例。
contract('MetaCoin', function(accounts) {
it("should put 10000 MetaCoin in the first account", function() {
// Get a reference to the deployed MetaCoin contract, as a JS object.
var meta = MetaCoin.deployed();
// Get the MetaCoin balance of the first account and assert that it's 10000.
return meta.getBalance.call(accounts[0]).then(function(balance) {
assert.equal(balance.valueOf(), 10000, "10000 wasn't in the first account");
});
});
});
需要注意的是在contract()
函式的傳入的MetaCoin
僅僅因為用來展示,說明它是MetaCoin
相關的測試,並無本質作用。
合約
Truffle提供了介面抽象,方便你與合約進行便捷互動。通過var meta = MetaCoin.deployed()
這行。Truffle設法保證了,你可以在測試用例,前端,移植(Migration)中都能用這種方式與你自己寫的合約進行互動。可以在7. 合約互動章節瞭解更多。
命令
要執行測試,執行下面的命令:
truffle test
你也可以對單個檔案執行測試:
truffle test ./path/to/test/file.js
注意事項
EthereumJS TestRPC在進行自動化測試時相比其它客戶端會快非常多。而且,TestRPC包含了一些,Truffle可以用來加速測試的特性。作為一個能用流程,我們建議你在開發和測試環節使用TestRPC。當你籌備好要釋出到現上時,才使用Geth或其它官方以太坊客戶端來進行一次測試。
更多
Truffle提供了操作Mocha的配置檔案的入口。參見1. 配置檔案章節來了解更多。
如果任何問題,歡迎留言批評指正。
相關文章
- 以太坊Solidity程式語言開發框架————4、編譯合約Solid框架編譯
- 以太坊Solidity程式語言開發框架————7、合約互動Solid框架
- 以太坊Solidity程式語言開發框架————5、移植Solid框架
- 以太坊Solidity程式語言開發框架————9、控制檯Solid框架
- 以太坊Solidity程式語言開發框架————1、Truffle簡介Solid框架
- 以太坊Solidity程式語言開發框架————10、外部指令碼Solid框架指令碼
- 以太坊Solidity程式語言開發框架————11、工作流Solid框架
- 以太坊Solidity程式語言開發框架————12、聯絡開發者Solid框架
- 以太坊Solidity程式語言開發框架————13、配置檔案Solid框架
- 以太坊Solidity程式語言開發框架————15、構建流程Solid框架
- 以太坊Solidity程式語言開發框架————16、Truffle命令指南Solid框架
- 以太坊Solidity程式語言開發框架————3、建立一個工程Solid框架
- 以太坊Solidity程式語言開發框架————6、構建應用Solid框架
- 智慧合約語言 Solidity 教程系列8 – Solidity APISolidAPI
- 智慧合約語言 Solidity 教程系列8 - Solidity APISolidAPI
- 以太坊Solidity程式語言開發框架————2、網路與APP部署Solid框架APP
- 以太坊Solidity程式語言開發框架————14、網路與APP部署Solid框架APP
- 用solidity語言開發代幣智慧合約Solid
- 分投趣fintoch系統合約開發分析(Solidity程式語言)Solid
- olidity語言開發以太坊智慧合約中的繼承繼承
- 以太坊智慧合約開發第五篇:字串拼接—Solidity字串Solid
- Forsage佛薩奇合約矩陣(Solidity程式語言)系統開發程式碼詳情矩陣Solid
- 太坊智慧合約開發第一篇:IDE對solidity語法的支援IDESolid
- NFT鑄造合成LP質押挖礦系統合約開發丨Solidity程式語言Solid
- 以太坊智慧合約開發第六篇:truffle開發框架框架
- 智慧合約從入門到精通:Solidity語言的開發規範和開發流程Solid
- 智慧合約從入門到精通:Solidity組合語言Solid組合語言
- Solidity語言學習筆記————32、建立合約Solid筆記
- 以太坊智慧合約開發:讓合約接受轉賬
- 秒合約|合約跟單|永續合約系統開發|測試版
- NEO智慧合約黑盒測試框架框架
- 智慧合約語言 Solidity 教程系列1 – 型別介紹Solid型別
- 智慧合約語言Solidity的最佳VSCode 外掛SolidVSCode
- 智慧合約語言 Solidity 教程系列9 - 錯誤處理Solid
- Solidity語言學習筆記————35、抽象合約和介面Solid筆記抽象
- 智慧合約語言 Solidity 教程系列5 - 陣列介紹Solid陣列
- 智慧合約語言 Solidity 教程系列3 - 函式型別Solid函式型別
- 區塊鏈2.0以太坊智慧合約solidity之helloworld區塊鏈Solid