Truffle
使用 Truffle 和 ganache 成功部署合約的問題
長話短說,我的契約沒有通過使用 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); }); } ); });
我認為至少有幾個問題需要解決:
- 你應該替換
artificats
為artifacts
- 創建新合約實例時,您應該使用正確的變數。在你的情況下,
Auction
而不是Go
.總之:
const Auction = artifacts.require('./implementor.sol'); contract('Go',(accounts) => { let Go; beforeEach(async () => { Go = await Auction.new() }); //... }
所以@sergi Juanati 是正確的,我的拼寫非常錯誤。但是,這不是我沒有得到任何返回甚至錯誤的原因。原因是由於某種原因執行
truffle test
沒有執行實際測試。無論我在哪個目錄中,它都沒有執行測試,所以我必須自己指定它。我感謝所有的幫助!。