我使用remix制定了合同。复制合同并编写mocha测试后,我在运行部署测试时收到以下错误:
错误:" undefined"的参数数量无效
1)"在每个"之前挂钩"部署合同": 错误:" undefined"的参数数量无效。得到0预期1!
构造函数以前使用了参数& 我意识到我错误地将变量类型地址作为测试(合同)构造函数的参数,我在测试中没有提供。删除参数(在构造函数中未使用)后,测试通过。
function Test(address) public {...
它按照我的预期在remix(没有错误/警告)中工作,所以在将代码复制到编辑器之前我没有抓住它。
remix在部署合同时是否会忽略错误的参数?有没有办法在混音中捕捉到它?
答案 0 :(得分:2)
remix在部署合同时会忽略未使用的参数吗?
嗯,实际上,当你遗留参数时,它会给你一个警告:
警告:未使用的功能参数。删除或注释掉变量名称以使此警告静音。 function demo(address _unused)public pure returns(uint8){
但似乎如果你只提供没有名字的变量类型,那么remix就会忽略它:
有没有办法在混音中捕捉到它?
如果无名变量的值存储在堆栈中,可能会在assembly中捕获这样的东西,但这很深入探讨了如何编译Solidity代码并且可能不适合于测试