那里。
我在下面编写杀死函数:
function kill() public onlyOwner returns (bool) {
selfdestruct(msg.sender);
return true;
}我的单元测试代码:
function testOwnerCanKillContract() public {
XToken xtn = XToken(DeployedAddresses.XToken());
bool isKilled = nmt.kill();
Assert.equal(isKilled, true, "Owner should have to kill contract with selfdestruct.");
}但是,在$块菌测试后出现还原错误时,测试会失败:
Error: Returned error: VM Exception while processing transaction: revert那么,有谁知道如何解决这个问题,或者有什么想法吗?
此外,我的设想是:松露v5.0.5 (核心: 5.0.5) Solidity v0.5.0 (solc-js) Node v10.9.0
提前感谢!
发布于 2019-03-19 02:45:23
我不太明白密码。看起来应该是xtn.kill();
在任何情况下,杀死清除状态和字节码。如果我没有弄错,return的步骤永远不会发生,因为合同被取消了。
如果是那样的话,任何对合同的调用都会失败。粗略地说,这是一种测试方法。
onlyOwner函数,即测试不应该发生的事情实际上永远不会发生。msg.sender收到了余额。这就是其中的一部分。0x。如何检测地址是否为契约?。除非你真的有一个很好的理由,我会倾向于使用暂停模式来避免在区块链上造成令人讨厌的空洞。自毁是一种残忍的方式,会导致麻烦。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/68514
复制相似问题