从不起作用的函数将assert.fail转换为async-await时出错

问题描述 投票:0回答:1

我正在尝试使用异步等待语法转换一些测试代码以使其正常工作。使用async-await的上述部分代码无法正常工作,而使用then的下部代码则可以正常工作。

有人可以建议我如何更正代码以使其正常工作吗?谢谢

不工作

it("transfers token ownership", async () => {
            tokenInstance = await DappToken.deployed();

            try {
              return tokenInstance.transfer.call(accounts[1], "9999999999999999");
            } catch (error) {
              console.log("error ", error);
              assert(
                error.message.indexOf("revert") >= 0,
                "Error message must contain revert"
              );
            }
          });

工作中

it("transfers token ownership", function() {
    return DappToken.deployed()
      .then(function(instance) {
        tokenInstance = instance;
        return tokenInstance.transfer.call(accounts[1], 9999999999999999999);
      })
      .then(assert.fail)
      .catch(function(error) {
        // console.log("error", error);
        assert(
          error.message.toString().indexOf("invalid") >= 0,
          "error message must contain revert"
        );
        return tokenInstance.transfer.call(accounts[1], 250000, {
          from: accounts[0]
        });
      })
mocha chai
1个回答
0
投票

以下代码有效!

希望这对其他人有帮助:)

 it("transfers token ownership", async () => {
    tokenInstance = await DappToken.deployed();

    try {
      await tokenInstance.transfer.call(accounts[1], "9999999999999999");
      assert(false);
    } catch (error) {
      assert(
        error.message.indexOf("revert") >= 0,
        "Error message must contain revert"
      );
    }
  });
© www.soinside.com 2019 - 2024. All rights reserved.