我正在尝试遵循 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 次失败
- 合约:EthSwap EthSwap部署 合约有一个名称: “未定义”的参数数量无效。得到 0 预期 1! 错误 在 PromiEvent (C:\Users\user\AppData\Roaming 下午 ode_modules ruffle uild\webpack:\package