2017-11-29 40 views
0

私はSolidityとTruffleを使用してethereumネットワーク上にERC20トークンICOを設定しています。テストスイートトリュフ全体の契約の新しいインスタンスを作成する方法

私は4つのテストファイルを持っています(私は理想的にはそれらを短く簡潔にしています)、トークンをテストするためのもの、セットアップのテスト用のものクラウドスケール、1つは成功したテストスルー(キャップ​​に達するところ)、もう1つは非常停止機能をテストするためのものです。

このため、私は、セットアップのテストファイルで

すなわち、各ファイルに自分のことをテストするために、上記の値を使用する複数のそれ()テストケースを介して実行したいと思います:

まずそれ()のテストは、契約が展開されている場合

第二に、それ()テスト契約変数が正しく設定されている場合など、私はその後、各ファイルのトークンとの契約の新しいインスタンスを作成しようとしました

ので、私はthrouを実行することができますさまざまなテストケース。ステータスが成功crowdsaleテストを終えた後に1にリセットされていない

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) 

:私のテストを走るとき

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

は、しかし、私はエラーを取得:

各ファイルはで始まりますファイルが実行されたため、Sale.new()行は機能しません。

これを行うより良い方法はありますか?私は何か不足していますか?

ありがとうございます。

答えて

0

このエラーが発生したのは、契約がネットワークに展開されるまで待たずに、代わりに非同期関数内で実行するように変更し、契約待ちまで待つ 'await'関数を使用したためです残りのテストを続ける前に展開されていました。

次のように私の作業コードは次のとおりです。

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"); 
});