为什么使用 Solidity 编程语言来测试用 Solidity 编写的智能合约不是一个好主意?

Why using Solidity programming language to test smart contracts written in Solidity is not a good idea?

我正在尝试使用 truffle,truffle 明确指出您可以使用其测试功能来允许您使用 solidity 编程语言来测试 solidity 合约。然而,在网上,许多开发人员使用 Mocha 和 Chai。因此,需要 JS.

我知道我可以避免使用 JS 进行测试,而只在 truffle 中使用 Solidity。但为什么没有人大声说出这样做的局限性。此外,有没有任何资源明确说明这一点?

为什么没有足够的资源来使用 solidity 语言进行测试?

由于 JS 测试在更高的范围内执行,它们可以访问交易收据,并且您可以验证事件日志等。收据在 Solidity 测试中不可用,因为它们尚未生成,因为当时交易尚未完成执行。

同样由于这个更高的范围,JS 测试框架允许您以编程方式与区块链模拟器进行交互。例如:

  • 在发送交易的多个账户之间切换,通常用于测试授权
  • 设置blocktime,以便您可以测试time-sensitive功能