Ginkgo是GO設計的成熟測試框架,以幫助您編寫富有表現力的規格。 Ginkgo建立在GO testing
基金會之上,並由Gomega Matcher庫補充。 Ginkgo和Gomega一起讓您清楚地表達了規格背後的意圖:
進口 ( 。 “ github.com/onsi/ginkgo/v2”。 “ github.com/onsi/gomega"...。:) var _ =描述(“在圖書館簽出書”,label(“庫”),func(){var library *library *libraries.libraryvar books. books.bookvar valjean *user.userbeforeach(func(){library = libraries.newclient()books.books.book {title:“ les miserables”,作者:“ Victor Hugo”, } valjean = user.newuser(“讓·瓦爾讓”) })(“庫有相關書籍”時,func(){each(func(ctx speccontext)){preenge(liblary.store(ctx,book))。 })context(“和書籍可用”,func(){it(“將其借給讀者藉給讀者”,func(ctx speccontext){Expect(valjean.checkout(ctx,庫,“ les Morerables”))。 (成功())期望(valjean.books())。to(contanelement(book))期望(library.userwithbook(ctx,book))。 },spectimeout(time.second * 5)) })context(“但是已經簽出了這本書”,func(){var javert *uster.userbeforeach(func(ctx speccontext){javert = users.newuser(“ javert”)圖書館,“ Les Miserables”) )。到(成功()) })(“告訴用戶”,func(ctx speccontext){err:= valjean.Checkout(ctx,庫,“ les miserables”)期望(err).to(gatchError(“ gatsError)(“ les miserables當前已簽出”) ) },spectimeout(time.second * 5))(“讓用戶放置並稍後通知”,func(ctx speccontext){期望(valjean.hold(ctx,庫,“ les morerables”)。 (成功())期望(valjean.holds(ctx))。到(continelement(book))by(“當javert返回書籍時”)期望(javert.return(ctx,cribrle,book))。 ))(“最終通知Valjean”)通知:=“ Les Miserables已準備好接收”(CTX,Valjean.notifications)。 les miserables'))。到(成功())期望(valjean.books(ctx))。to(contanelement(book))期望(valjean .holds(ctx))。to(beempty()) },spectimeout(time.second * 10)) })) })(“庫沒有相關書籍”時,func(){it(“告訴讀者不可用的讀者” les miserables”)期望(err)。 },spectimeout(time.second * 5)) })) }))
跳到文檔以了解更多信息。 引導並開始編寫您的第一個規格很容易。
如果您有疑問,評論,錯誤報告,功能請求等。請打開GitHub問題,或訪問Ginkgo Slack頻道。
是否編寫基本單元規格,複雜的集成規格,甚至是性能規範- 銀眼都會為您提供一種表現力的特定域語言(DSL),這些語言(DSL)將對來自Quick,Rspec,Rspec,Jasmine和Busted等框架的用戶熟悉。 儘管銀杏的實用程序擴展到了接受級測試,但這種測試風格有時被稱為“行為驅動的開發”(BDD)(BDD)。
使用Ginkgo的DSL,您可以使用可嵌套的Describe
, Context
和容器節點When
幫助您組織規格。用於設置和清理BeforeEach
和AfterEach
設置節點。 It
並Specify
持有主張的主題節點。套房後要準備和清理的BeforeSuite
和AfterSuite
節點……等等!
在運行時,銀杏可以以可重複的隨機順序運行您的規格,並且對規格並行化具有復雜的支持。 實際上,並行運行規格就像
銀杏-p
通過遵循已建立的圖案以編寫並行規格,您甚至可以構建大型,複雜的集成套件,這些套件可以平行並進行性能。 而且,您不必擔心自己的規格套件懸掛或在後面留下混亂-Ginkgo提供每個節點context.Context
和在設定的時間後打斷規格的能力 - 然後清理。
隨著套房的種植,銀杏可以幫助您保持標籤的規格,並讓您輕鬆地以編程方式或在命令行上運行規格子集。 Ginkgo的報告基礎架構以各種格式生成機器可讀的輸出,並允許您構建自己的自定義報告基礎架構。
銀杏帶有ginkgo
,這是一種命令行工具,該工具支持生成,跑步,過濾和分析Ginkgo套房。 當Ginkgo檢測到ginkgo watch
的更改時,您甚至可以自動運行規格,從而在測試驅動的開發過程中可以快速反饋循環。
那隻是銀杏! Gomega為您的套房帶來了一個豐富,成熟的主張和匹配者家族。 使用Gomega,您可以在規格中輕鬆地將同步和異步主張混合在一起。 您甚至可以通過構成Gomega現有的構建塊來快速,輕鬆地構建自己的一套表達域特異性匹配器。
愉快的測試!
銀杏是通過mit許可的
參見貢獻