ミッションステートメント:
このミッションは、改造テスト投票契約に興味のある人は/投票契約テストをリファクタリングする彼にDEVからの支援に署名する必要があるので、/投票-契約テストをリファクタリング枝に基づいています。(または、このブランチに合わせて独自の倉庫に新しいブランチを作成します。)
項目のテスト/ AElf.Contracts.AEDPoSExtension.Demo.Testsは、基本的なTestKit AEDPoS拡張機能を使用する方法を知っているか確認してください。試験DemoTest(以下に示す)はどのブロックチェーンシステムを示しています。その後、1つのブロックにそれらをパッケージいくつかのトランザクションを選択し、各ブロックは、新しい前のブロックに基づいています。XXStubを使用することで、送信/呼び出すことができるように、ユーザー固有のトランザクションは、同じ試験方法で特定の契約を呼び出します。また、あなたはXXStubは、トランザクションを生成するために使用することができます。
【事実】 公衆 非同期タスクDemoTest() { // 初期化後のラウンド情報を確認してください。 { VARのラウンド=を待つ ConsensusStub.GetCurrentRoundInformation.CallAsync(新しい空の())。 round.RoundNumber.ShouldBe(1 )。 round.TermNumber.ShouldBe(1 )。 round.RealTimeMinersInformation.Count.ShouldBe(AEDPoSExtensionConstants.InitialKeyPairCount)。 } // 我々は、この方法のプロセスのテストを使用することができます。 //基本的にこれは、トランザクションなしで一つのブロックが生成されます。 待つBlockMiningService.MineBlockAsyncを(); // これはひとつのトランザクションで1つのブロックが生成されます。 // このトランザクションは、トークン契約のメソッドを作成して呼び出します。 待つ BlockMiningService.MineBlockAsync(新しいリスト<トランザクション> { TokenStub.Create.GetTransaction(新しいCreateInput { 記号 = " ELF " 、 小数 = 8 、 TOKENNAME =を" テスト" 、 発行 = Address.FromPublicKey(SampleECKeyPairs.KeyPairs [ 0 ] .PublicKey)、 IsBurnable = 真、 TotalSupply = 1_000_000_000_00000000 }) })。 // 前回正常に実行されたトランザクションを作成するかどうかを確認してください。 { VAR = tokenInfoを待つ TokenStub.GetTokenInfo.CallAsync(新しい GetTokenInfoInput {記号= " ELFは" })。 tokenInfo.Symbol.ShouldBeは(" ELF " ); } // 次のステップAEDPoSプロセスが正しいかどうかをチェックします。 // これで2鉱山労働者は、最初のラウンド中のブロックを生成するので、2人の鉱夫OutValueがnullではないがあるはずです。 { VARのラウンド=を待つ ConsensusStub.GetCurrentRoundInformation.CallAsync(新しい空の())。 round.RealTimeMinersInformation.Values.Count(M!=> m.OutValue = ヌル).ShouldBe(2 )。 } 待つ BlockMiningService.MineBlockAsync(新しいリストを<トランザクション> ()); { VARのラウンド=は待つ(ConsensusStub.GetCurrentRoundInformation.CallAsyncを新しい空の()); round.RealTimeMinersInformation.Values.Count(M!=> m.OutValue = ヌル).ShouldBe(3 ); } // 現在5人の鉱夫を持っており、この行の前に、3つの鉱山労働者は、既にブロックを生成します。 // 3つの以上のブロックは、現在のラウンドを終了します。 ため(VAR i = 0 ; iは< 3 ; iが++ ) { 待つ(BlockMiningService.MineBlockAsyncを新しいリスト<トランザクション> ()); } // ラウンド数を確認してください。 { VARのラウンド=を待つ ConsensusStub.GetCurrentRoundInformation.CallAsync(新しい空の())。 round.RoundNumber.ShouldBe(2 )。 } // 6以上のブロックは、第二ラウンドを終了します。 用(VAR I = 0 ;私は< 6を、私は++ ) { 待つ BlockMiningService.MineBlockAsync(新しいリスト<トランザクション> ()); } //ラウンド数を確認してください。 { VARのラウンド=を待つ ConsensusStub.GetCurrentRoundInformation.CallAsync(新しい空の())。 round.RoundNumber.ShouldBe(3 )。 } }
これを知って、あなたがに行くことができます
test/AElf.Contracts.Vote.AEDPoSExtension.Tests
契約票のテストケースを再構築してみてください。テストロジックの場合は、ロジックは、単純に現在のテストケースをコピーすることができます
AElf.Contracts.Vote.Tests
。
加えて、他のシステムは、(その中に配置された歓迎再契約していますcontract/
)。README
で test/AElf.Contracts.AEDPoSExtension.Demo.Tests
テストプロジェクトを作成する方法について説明します。