1

我有一份使用remix开发的合同。复制合约并编写 mocha 测试后,我在运行部署测试时收到以下错误:

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

1)“部署合同”的“每个之前”挂钩:错误:“未定义”的参数数量无效。得到 0 预期 1!

构造函数之前使用了一个参数,我意识到我错误地将变量类型地址作为测试(合同)构造函数的参数,而我没有在测试中提供。删除参数(未在构造函数中使用)后,测试通过。

function Test(address) public {...

它像我预期的那样在混音中工作(没有错误/警告),所以在将代码复制到编辑器之前我没有抓住它。

remix 在部署合约时会忽略错误参数吗?有没有办法在混音中捕捉到这个?

4

1 回答 1

2

remix 在部署合约时会忽略未使用的参数吗?

好吧,实际上,当您未使用参数时,它会给您一个警告:

警告

警告:未使用的函数参数。删除或注释掉变量名称以消除此警告。函数演示(地址_未使用)公共纯返回(uint8){

但似乎如果你只提供没有名称的变量类型,那么 remix 就会忽略它:

没有警告


有没有办法在混音中捕捉到这个?

如果无名变量的值存储在堆栈中,则可能在程序集中捕获此类内容,但这是对 Solidity 代码如何编译的深入研究,可能不适合仅用于测试的目的。

于 2018-02-02T22:33:01.833 回答