Solidity

使用 async/await 進行松露測試

  • August 1, 2017

有沒有人讓 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

引用自:https://ethereum.stackexchange.com/questions/16621