如何在每次不部署的情况下测试合同?

how to test contract without deploy every time?

4天前我开始学习solidity。 每次我按照以下步骤操作时:

1 - 打开 remix Solidity Ide 站点 2 - 设置 ropsten 测试网络(注入 web3) 3 - 部署 4 - 一些反应编码与 web3 js 5 - 尝试从我的前端应用程序或从混音站点

中的 blue/red 按钮进行一些调用

一切似乎都有效,但是例如,如果编译器不会在代码中发现错误,但我错了一些逻辑,我需要用它的 kill 函数杀死现有合约,然后通过编辑部署一个新合约。

我知道单元测试有 truffle,我希望将来使用,但我需要一个 "manual" 测试来重现与 metamask 的手动交互。

您应该使用本地以太坊节点在您的机器上进行测试。我推荐ganache。启动后,您可以在本地连接它,例如HTTP://127.0.0.1:7545。 `

All seems to work but for example if compiler will not find error in code but I wrong some logic, I need to kill existing contract with its kill function and then deploy a new contract with the edit.

but I need a "manual" test to reproduce manual interaction with metamask.

通常开发人员从 testrpc(现在更名为 ganache)开始,这是一个本地模拟,用于测试其功能的契约。

如果您使用的是 remix ide,javascript VM 也可用于更快的测试迭代。

我建议只有在上述任何一种测试方法产生良好结果后,才切换到与 metamask 的手动交互。这样在重做合约的kill和redeployment时节省了很多时间。

此外,如果您打算转向 truffle,最好现在就开始,因为它提供了使用 mocha 风格脚本的测试驱动开发,可以在 javascript 本身完成。