Solidity
使用 async/await 進行松露測試
有沒有人讓 Truffle 測試與 async/await 一起工作?
我的測試範常式式碼
require('babel-polyfill'); var ERCToken = artifacts.require("./ERCToken.sol"); var Proxy = artifacts.require("./Proxy.sol"); contract('ERCToken', function(accounts) { it("should allow purchase", async function () { var expected = 10; var meta = ERCToken.deployed(); var result = await meta.purchase({from:accounts[0],value:80000}); var balance = await meta.balanceOf(accounts[0]); assert.equal(balance.valueOf(),expected,"should have purchased "+ expected + "tokens"); }); });
TypeError:meta.purchase 不是函式
solidity 程序確實有一個稱為購買的功能。如果沒有 then 呼叫,ERCToken.deployed() 似乎無法解決。
誰能告訴我我哪裡出錯了?
結果發現問題出在我使用 Truffle 部署合約的方式上。基本上,代理合約的建構子將 ERCToken 的地址作為輸入。因此 Truffle 的部署方法僅針對主合約(ERCToken)正確解析,而從未針對代理。
我不得不通過添加單獨的函式來設置 ERCToken 地址來重建構構子程式碼,然後分別部署兩個合約。這導致 ERCToken.deployed() 和 Proxy.deployed() 都正確解析。
已完成的 async/await 程式碼可在此處獲得:https ://github.com/zincoshine/solidity-proxy-example