Ginkgoは、表現力豊かな仕様の作成に役立つGO設計の成熟したテストフレームワークです。 GinkgoはGoのtesting
Foundationの上に構築され、Gomega Matcher Libraryによって補完されています。 一緒に、GinkgoとGomegaはあなたのスペックの背後にある意図をはっきりと表現させます。
輸入 ( 。 「github.com/onsi/ginkgo/v2」。 "github.com/onsi/gomega"..)var _ = describe(" books out out the library "、" books out of the books "、label(" briberic ")、func(){var library *librariers.libraryvar book *books.bookvar valjean *users.userbeereach(func(){library = libraries.newclient()book =&books.book {"les miserables"、著者: "Victor Hugo"、 } valjean = users.newuser( "Jean Valjean") })( "図書館には問題の本があります"、func(){beforeeach(func(ctx speccontext){expect(library.store(ctx、book))。 })context( "and the Book is vayable"、func(){it( "leds to the reader"、func(ctx speccontext){expect(valjean.checkout(ctx、library、 "les miserables"))。 (sceed())heques(valjean.books()) }、spectimeout(time.second * 5)) })コンテキスト(「しかし、本はすでにチェックアウトされています」、func(){var javert *users.userbeforeach(func(ctx speccontext){javert = users.newuser( "javert")expect(javert.checkout(ctx、(ctx、)図書館、「レゼルブルズ」))。 })it( "tells the user"、func(ctx speccontext){err:= valjean.checkout(ctx、library、 "les miserables")request(err)。 )) }、spectimeout(time.second * 5))it( "ユーザーが後でホールドを配置して通知を取得できる"、func(ctx speccontext){expect(valjean.hold(ctx、 "les miserables"))。 (sceed())hequent(valjean.holds(ctx))。to(containlement(book))by( "javertが本を返したとき")food(javert.return(ctx、library、book))。 ))(「最終的にはValjeanに通知する」)通知:= "Les Miserablesは最終的に(CTX、Valjean.Notifications)の準備ができています。 les miserables ")) }、spectimeout(time.second * 10)) }) })(「図書館には問題がある」という場合、func(){it( "本は利用できないことを読者に伝えます"、func(ctx speccontext){err:= valjean.checkout(ctx、library、 " les miserables ")hequent(err).to(" les miserablesは図書館のカタログにない ")))))) }、spectimeout(time.second * 5)) }) })
詳細については、ドキュメントにジャンプします。 ブートストラップして最初の仕様の作成を開始するのは簡単です。
質問、コメント、バグレポート、機能リクエストなどがある場合は、GitHubの問題を開くか、Ginkgo Slackチャンネルにアクセスしてください。
基本ユニットの仕様、複雑な統合仕様、またはパフォーマンス仕様の作成であれ、Ginkgoは、Quick、RSPEC、Jasmine、Bustedなどのフレームワークから馴染みのあるユーザーに馴染みのある表現型ドメイン固有の言語(DSL)を提供します。 このスタイルのテストは、「行動主導の開発」(BDD)と呼ばれることもありますが、Ginkgoのユーティリティは受け入れレベルのテストを超えています。
GinkgoのDSLを使用すると、Nestable Describe
、 Context
、およびContainerノードを使用しWhen
、スペックを整理するのに役立ちます。セットアップとクリーンアップのためのセットアップノードのBeforeEach
とAfterEach
ノード。 It
あなたの主張を保持するサブジェクトノードSpecify
。 BeforeSuite
とAfterSuite
ノードは、スイートの後に準備してクリーンアップするためのノード...
実行時に、Ginkgoはあなたのスペックを再現性のあるランダムな順序で実行することができ、仕様の並列化に対する洗練されたサポートがあります。 実際、仕様を並行して実行するのは簡単です
Ginkgo -P
並列仕様を作成するための確立されたパターンに従うことにより、きれいに並列化し、パフォーマンスを発揮する大規模で複雑な統合スイートを構築できます。 スペックスイートがぶら下がったり、混乱を残したりすることを心配する必要はありません。Ginkgoは、ノードごとのcontext.Context
を提供します。
あなたのスイートが成長するにつれて、Ginkgoはあなたのスペックをラベルで整理したままにするのに役立ち、プログラムでまたはコマンドラインでスペックのサブセットを簡単に実行できます。 また、Ginkgoのレポートインフラストラクチャは、さまざまな形式でマシン読み取り可能な出力を生成し、独自のカスタムレポートインフラストラクチャを構築できます。
Ginkgoは、Ginkgo Suitesの生成、実行、フィルタリング、プロファイリングをサポートするコマンドラインツールであるginkgo
に出荷されます。 Ginkgoは、 ginkgo watch
による変更を検出したときにスペックを自動的に実行することもでき、テスト駆動型開発中に迅速なフィードバックループを可能にします。
そして、それはただのイチョウです! ゴメガは、豊かで成熟した、アサーションとマッチャーの家族をあなたのスイートにもたらします。 Gomegaを使用すると、スペックに同期と非同期のアサーションを簡単に混ぜることができます。 Gomegaの既存のビルディングブロックを作成することで、表現力豊かなドメイン固有のマッチャーのセットをすばやく簡単に構築することもできます。
幸せなテスト!
GinkgoはMITライセンスです
Convributing.mdを参照してください