Testing

針對本地網路與測試網進行測試

  • March 14, 2022

我有一個簡單的測試來在新部署的合約上鑄造代幣。

在開發過程中,我在本地進行測試,並且測試從未失敗。現在合約已部署到測試網,我的測試失敗率為 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)

我很確定我們的開發環境在合約真正準備好之前就與它們進行互動,即使我們確實使用了非同步。

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