簡體   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