Testing
針對本地網路與測試網進行測試
我有一個簡單的測試來在新部署的合約上鑄造代幣。
在開發過程中,我在本地進行測試,並且測試從未失敗。現在合約已部署到測試網,我的測試失敗率為 50%。
我可以檢查 Snowtrace 上的合約,並查看 mint 函式是否正確執行。
我的問題是為什麼
await
不遵守?請參閱有問題的測試:
it("should allow owner to mint tokens", async function () { await contract.deployed(); await expect(() => contract.mint(bobAddress, fiveHundred)) .to.changeTokenBalance(contract, bob, (500 * (10 ** (decimals))).toString()); });
我真的認為你應該先執行 mint 函式,然後使用 wait 方法等待交易成功,然後使用“ expect ”檢查“ bobAddress ”餘額中有五百:>
await (await contract.mint(bobAddress, fiveHundred)).wait();
我也遇到了這個。解決方案是等待值更新。
由於我在 Python 中工作,因此您需要將其轉換為 JavaScript ……
while contract.owner() != bob: # assuming bob is the owner. time.sleep(1) contract.mint(etc, etc)
我很確定我們的開發環境在合約真正準備好之前就與它們進行互動,即使我們確實使用了非同步。