测试 Diamond 智能合约的惯用方法

问题描述 投票:0回答:1

我编写和测试 Solidity 代码已经有一段时间了,而且我发现自己相当广泛地使用

smock2
库。简而言之,确保在
ContractA
测试期间,测试
ContractA
调用
ContractB
,而不是测试
ContractB
调用的实际副作用。它可以很好地分离关注点并减少代码重复。

但是,在使用 EIP-2535(又名钻石模式)时,我很难弄清楚如何避免从

FacetB
测试
FacetA
,例如,当
FacetA
的方法调用
FacetB(address(this)).doSomething()
时。

是否有一种可接受的方式来模拟方面?或者,是否有一种惯用的方法来单独测试各个方面,即使它们相互依赖?理想情况下,无需将

FacetB
复制到仅用于测试的 Solidity 模拟中......

我通常使用

hardhat
(与
ethers
一起)和
hardhat-deploy
,不幸的是后者的文档很少。 使用
hardhat-deploy
的固定装置以及
smock
的任何东西都会获得额外积分。

unit-testing testing mocking solidity
1个回答
0
投票

我面临着同样的问题rn:(你有什么建议吗?

© www.soinside.com 2019 - 2024. All rights reserved.