繁体   English   中英

如何为整个测试套件松露创建合同的新实例

[英]How to create new instance of contract for whole test suite truffle

我正在使用Solidity和Truffle在以太坊网络上设置ERC20令牌ICO。

谁能告诉我为什么它不起作用,我有4个测试文件(我希望尽可能使它们尽可能简短),一个用于测试令牌,一个用于测试众筹设置,一个用于测试一次成功运行(到达上限)和一个用于测试紧急停止功能的程序。

由于这个原因,我想运行多个it()测试用例,这些用例使用前面的值来测试每个文件中自己的东西,即

在设置测试文件中:

首先,it()测试合同是否已部署

其次,it()测试合同变量是否设置正确等。

然后,我尝试在每个文件上创建令牌和合同的新实例,以便可以运行各种测试用例。

每个文件都以:

  Token.new(initialAmount, tokenName, decimalUnits,tokenSymbol, {from: account_one});
  Sale.new(softCap, hardCap, etherCostOfEachToken, account_one, token, durationInMinutes, {from: account_one});

但是,通过测试运行时出现错误:

AssertionError: State of contract was not 'Waiting approval': expected '4' to equal 1
at /Users/jackpickering/Desktop/Development/Capped_ICO/test/4Crowdsale_EmergencyStop_Test.js:28:14
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)

在运行成功的众筹测试文件后,状态尚未重置为1,因此,Sale.new()行不能正常工作。

有一个更好的方法吗? 我有什么想念的吗?

提前致谢。

我收到此错误的原因是因为我没有等到合同已部署到网络上,而是将它们更改为在异步功能内执行,并使用“等待”功能等待合同已部署之前进行其余的测试。

我的工作代码如下:

it("should create new token", async function() {
  token = await Token.new(initialAmount, tokenName, decimalUnits,tokenSymbol)
  supply = await token.totalSupply();
  assert.equal(supply, 10000000, "New crowdsale was not created");
});

it("should create new crowdsale", async function() {
  sale = await Sale.new(softCap, hardCap, etherCostOfEachToken, account_one, Token(token), durationInMinutes);
  state = await sale.getState();
  assert.equal(state, 1, "New crowdsale was not created");
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM