我正在尝试创建一个集成测试(测试多个smartContracts一起工作)。我在beforeEach()函数中重新初始化它们。所以我得到了每个测试用例的干净测试。我在其他集成测试中做过同样的事情,(使用相同的契约),但是这里我得到了这个错误。

如您所见,IntegrationTestWhitelist中没有任何问题(所有4个子测试都通过了)。
然而,TransactionTests失败了

在排除故障时,我发现TransactionTests只有在smartContracts ()中初始化两个或两个以上的smartContracts时才能工作。
否则我就会犯“摆脱毒气”的错误。我也尝试用不同的组合初始化/注释它们,只要我不初始化两个以上的组合,就会很好。单独的合同似乎没有什么问题。相反,如果加在一起看上去“太贵”了。
所以我想知道是否有人有类似的问题?
“守则”:
pragma solidity >=0.4.21 <0.7.0;
pragma experimental ABIEncoderV2;
import "../../../contracts/Whitelist.sol";
import "../../../contracts/Blacklist.sol";
import "../../../contracts/dgE.sol";
import "../../../contracts/ECB.sol";
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
contract TransactionTests {
//Contracts
dgE public DGE;
ECB public ecb;
Whitelist public WHITELIST;
Blacklist public BLACKLIST;
// Run before every test function (Only works if I comment out any two of them)
function beforeEach() public {
DGE = new dgE();
ecb= new ECB();
WHITELIST = new Whitelist();
BLACKLIST = new Blacklist();
}
/**
* The function should always return the same value. (Just an initial test)
*/
function testSender() public {
Assert.equal(msg.sender,msg.sender,"Values should be Equal");
}发布于 2022-09-11 10:52:35
我有此错误是因为问题,如果您的编译器抛出的错误超过了最大~24 go大小,那么首先修复契约大小问题,然后错误就会消失。这就是解决我类似问题的原因。
https://ethereum.stackexchange.com/questions/98469
复制相似问题