Truffle

合約未在 Truffle 測試中部署

  • January 28, 2019

我正在嘗試對 Truffle 做一個簡單的測試,但似乎 deploy() 承諾永遠不會被執行。

var MyContract = artifacts.require('MyContract')

contract('MyContract', function(accounts) {

   it('My Test', function () {
       MyContract.deployed().then(function (instance) {
           console.log('Deployed');
           assert.equal(1, 2, "This should fail");
       }).catch(function (e) {
           console.log(e);
           })
   })
})

當我進行truffle.cmd test --network ganache測試時,它只會執行並且不會將任何內容記錄到控制台。似乎 deploy() 承諾中的任何程式碼都沒有被執行。如果我這樣做,console.log(MyContract)我可以看到契約,所以它似乎是通過 Truffle 測試找到的。

知道有什麼問題嗎?

您必須返回承諾:

...
it('My Test', function () {
   return MyContract.deployed()...
});
...

或者,您可以使用非同步函式:

...
it('My Test', async function () {
   var myContract = await MyContract.deployed();
   console.log(myContract.address);
   ...
})
...

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