我怎样才能通过 it(...).then() 单元测试中的函数

How can I pass through the it(...).then() function in unit test of solidity

我前几天一直在学习solidity。很简单也很有趣,但是有很多问题自己解决不了。这是其中一个问题。 在某个合约的单元测试的源代码中,我发现了 it(...).then() 函数。

var DAppToken = artifacts.require("./DAppToken.sol");

contract("DAppToken",  (accounts) => {
    it("transfers taken ownership", async () => {
        const dappTokenInstance = await DAppToken.deployed();
        return await dappTokenInstance.transfer.call(accounts[1], 99999999999999999999999999999);
    }).then(assert.fail).catch((error) => {
        assert( error.message.indexOf("revert") >= 0, "error message must contain revert");
    });
});

没有按照我的预期执行。我收到以下错误。

TypeError: it(...).then 不是函数

我不确定这个错误。

How could I help me?

.then 不应该在 it 之后。它必须附加到返回的承诺中。

it("transfers taken ownership", async () => {
        const dappTokenInstance = await DAppToken.deployed();
        return await dappTokenInstance.transfer.call(accounts[1], 99999999999999999999999999999)
       .then(assert.fail).catch((error) => {
          assert( error.message.indexOf("revert") >= 0, "error message must contain revert");
    });
});

在这种情况下,在await之后使用.then来捕获错误。有点 try/catch