Solidity 错误““未定义”的参数数量无效”

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

我正在尝试遵循 YouTube 上的 Solidity 教程之一。我陷入了这个特定时刻。

这是一个可靠的代码:

    pragma solidity ^0.5.0;
    
    import "./Token.sol";
    
    contract EthSwap {
        string public name = "EthSwap Instant Exchange";
        Token public token;
    
        constructor(Token _token) public {
            token = _token;
        }
    }

这是部署代码:

const Token = artifacts.require("Token");
const EthSwap = artifacts.require("EthSwap");

module.exports = async function(deployer) {
  // Deploy Token
  await deployer.deploy(Token);
  const token = await Token.deployed()

  // Deploy EthSwap
  await deployer.deploy(EthSwap, token.address);
  const ethSwap = await EthSwap.deployed()

  // Transfer all tokens to EthSwap (1 million)
  await token.transfer(ethSwap.address, '1000000000000000000000000')
};

这是自动化测试的代码:

const Token = artifacts.require("Token");
const EthSwap = artifacts.require("EthSwap");

require('chai')
    .use(require('chai-as-promised'))
    .should()

function tokens(n) {
    return web3.utils.toWei(n, 'ether');
}

contract('EthSwap', (accounts) => {
    let token, ethSwap

    before(async () => {
        token = await Token.new()
        ethSwap = await EthSwap.new(token.address)
        // Transfer all tokens to EthSwap (1 million)
        await token.transfer(ethSwap.address, tokens('1000000'))
    })

    describe('Token deployment', async () => {
        it('contract has a name', async () => {
            let token = await Token.new()
            const name = await token.name()
            assert.equal(name, 'DApp Token')
        })
    })

    describe('EthSwap deployment', async () => {
        it('contract has a name', async () => {
            let ethSwap = await EthSwap.new()
            const name = await ethSwap.name()
            assert.equal(name, 'EthSwap Instant Exchange')
        })

        it('contract has tokens', async () => {
            let balance = await token.balanceOf(ethSwap.address)
            assert.equal(balance.toString(), tokens('1000000'))
        })
    })
})

在我将此代码添加到 Solidity 代码中之前测试运行正常:

    constructor(Token _token) public {
        token = _token;
    }

现在我在终端中看到以下内容:

2 次通过(559ms) 1 次失败

  1. 合约:EthSwap EthSwap部署 合约有一个名称: “未定义”的参数数量无效。得到 0 预期 1! 错误 在 PromiEvent (C:\Users\user\AppData\Roaming 下午 ode_modules ruffle uild\webpack:\package
javascript node.js automated-tests blockchain solidity
© www.soinside.com 2019 - 2024. All rights reserved.