Truffle

使用 Truffle 和 ganache 成功部署合約的問題

  • January 2, 2021

長話短說,我的契約沒有通過使用 truffle、mocha 和 chai 的部署測試。

我在 truffle 控制台中單獨運​​行程式碼,它返回的地址很好,但它不會通過我編寫的測試。我很肯定我寫的摩卡測試很好,但我想不通。

旁注:truffle test 從 truffle 控制台執行會導致 node.js 拋出錯誤。但是,truffle test從 CLI 執行可以正常工作並且只返回0 passing.

這是程式碼

const { expect } = require('chai')
.use(require('chai-as-promised'))
.should()

const Auction = artificats.require('./implementor.sol');

contract('Go',(accounts) => {
   let contract 
   
   describe('deployment',async() =>{
       it('deploys successfully',async ()=>{
           contract = await Go.deployed()
           const address = contract.address
           console.log(address)
           console.log('ran')
           assert.NotEqual(address,'')
       })
   } )
})

所以我嘗試了這種方式,因為我認為可能根本沒有創建契約。

const { expect } = require('chai')
.use(require('chai-as-promised'))
.should()

const Auction = artificats.require('./implementor.sol');

contract('Go',(accounts) => {
   beforeEach(async () => {
       this.Go = await Go.new()
   });
   
   describe('deployment',async() =>{
       let contract 
       it('deploys successfully',async ()=>{
           contract = await Go.deployed();
           const address = contract.address;
           assert.NotEqual(address,'');
           return(address);
       });
   } );
});

我認為至少有幾個問題需要解決:

  • 你應該替換artificatsartifacts
  • 創建新合約實例時,您應該使用正確的變數。在你的情況下,Auction而不是Go.

總之:

const Auction = artifacts.require('./implementor.sol');

contract('Go',(accounts) => {
   let Go;
   beforeEach(async () => {
       Go = await Auction.new()
   });

   //...
}

所以@sergi Juanati 是正確的,我的拼寫非常錯誤。但是,這不是我沒有得到任何返回甚至錯誤的原因。原因是由於某種原因執行

truffle test

沒有執行實際測試。無論我在哪個目錄中,它都沒有執行測試,所以我必須自己指定它。我感謝所有的幫助!。

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