Ginkgo เป็นกรอบการทดสอบที่เป็นผู้ใหญ่สำหรับ GO ที่ออกแบบมาเพื่อช่วยให้คุณเขียนรายละเอียดที่แสดงออก Ginkgo สร้างขึ้นบนรากฐาน testing
ของ GO และได้รับการเสริมด้วยห้องสมุด Gomega Matcher ร่วมกัน Ginkgo และ Gomega ให้คุณแสดงความตั้งใจที่อยู่เบื้องหลังรายละเอียดของคุณอย่างชัดเจน:
นำเข้า ( - "github.com/onsi/ginkgo/v2" "github.com/onsi/gomega"....) var _ = อธิบาย (" การตรวจสอบหนังสือออกจากห้องสมุด ", ฉลาก (" ห้องสมุด "), func () {var Library *Libraries.libraryvar Book *Books.bookvar Valjean *users.userbeforeach (func () {Library = Libraries.newClient () Book = & books.book {ชื่อเรื่อง: "Les Miserables", ผู้แต่ง: "Victor Hugo", } valjean = users.newuser ("Jean Valjean")) }) เมื่อ ("ห้องสมุดมีหนังสือที่เป็นปัญหา", func () {ก่อนหน้า (func (ctx speccontext) {คาดหวัง (Library.store (ctx, book)). ถึง (ประสบความสำเร็จ ()) }) บริบท ("และหนังสือเล่มนี้พร้อมใช้งาน", func () {มัน ("ให้ยืมกับผู้อ่าน", func (ctx speccontext) {คาดหวัง (valjean.checkout (CTX, ห้องสมุด, "Les Miserables")) (ประสบความสำเร็จ ()) คาดหวัง (valjean.books ()). ถึง (containlement (book)) คาดหวัง (Library.userwithbook (CTX, Book)) ถึง (Equal (Valjean)) }, spectimeout (time.second * 5)) }) บริบท ("แต่หนังสือเล่มนี้ได้รับการตรวจสอบแล้ว", func () {var javert *users.userbeforeach (func (ctx speccontext) {javert = users.newuser ("javert") คาดหวัง ห้องสมุด "Les Miserables")). ถึง (ประสบความสำเร็จ ()) }) มัน ("บอกผู้ใช้", func (ctx speccontext) {err: = valjean.checkout (CTX, ห้องสมุด, "Les Miserables") คาดหวัง ) }, spectimeout (Time.Second * 5)) มัน ("ให้ผู้ใช้วางไว้และรับการแจ้งเตือนในภายหลัง", func (ctx speccontext) {คาดหวัง (valjean.hold (CTX, ห้องสมุด, "Les Miserables")) (ประสบความสำเร็จ ()) คาดหวัง (valjean.holds (CTX)) ไปยัง (containlement (book)) โดย ("เมื่อ Javert ส่งคืนหนังสือ") คาดหวัง (javert.return (CTX, ห้องสมุด, หนังสือ)) )) โดย ("ในที่สุดมันก็แจ้ง Valjean") การแจ้งเตือน: = "Les Miserables พร้อมสำหรับการรับ" ในที่สุด (CTX, Valjean.notifications). ควรจะ (การแจ้งเตือน (การแจ้งเตือน)) (Valjean.Checkout (CTX, Library " les miserables ")). ถึง (ประสบความสำเร็จ ()) คาดหวัง (valjean.books (ctx)). ถึง (containlement (book)) คาดหวัง (valjean.holds (CTX)). ถึง (beempty ()) }, spectimeout (time.second * 10)) - }) เมื่อ ("ห้องสมุดไม่มีหนังสือที่มีปัญหา", func () {it ("บอกผู้อ่านว่าหนังสือไม่พร้อมใช้งาน", func (ctx speccontext) {err: = valjean.checkout (CTX, Library, " Les Miserables ") คาดหวัง (err) .to (matcherror (" Les Miserables ไม่ได้อยู่ในแคตตาล็อกห้องสมุด "))))))))))))))))))))))) }, spectimeout (time.second * 5)) - -
ข้ามไปที่เอกสารเพื่อเรียนรู้เพิ่มเติม เป็นเรื่องง่ายที่จะ bootstrap และเริ่มเขียนสเป็คแรกของคุณ
หากคุณมีคำถามความคิดเห็นรายงานข้อผิดพลาดคำขอคุณสมบัติ ฯลฯ โปรดเปิดปัญหา GitHub หรือเยี่ยมชมช่อง Ginkgo Slack
ไม่ว่าจะเป็นการเขียนข้อมูลจำเพาะหน่วยพื้นฐาน, ข้อมูลจำเพาะการรวมที่ซับซ้อนหรือแม้กระทั่งรายละเอียดประสิทธิภาพ - Ginkgo ให้ภาษาเฉพาะโดเมนที่แสดงออก (DSL) ซึ่งจะคุ้นเคยกับผู้ใช้ที่มาจากกรอบเช่นรวดเร็ว, RSPEC, Jasmine และ Busted รูปแบบการทดสอบนี้บางครั้งเรียกว่า "การพัฒนาที่ขับเคลื่อนด้วยพฤติกรรม" (BDD) แม้ว่ายูทิลิตี้ของแปะก๊วยจะขยายออกไปนอกเหนือจากการทดสอบระดับการยอมรับ
ด้วย DSL ของ Ginkgo คุณสามารถใช้ Nestable Describe
Context
และ When
โหนดคอนเทนเนอร์เพื่อช่วยคุณจัดระเบียบสเป็คของคุณ BeforeEach
นี้และ AfterEach
ติดตั้งโหนดการตั้งค่าสำหรับการตั้งค่าและการล้างข้อมูล It
และ Specify
โหนดหัวเรื่องที่ถือการยืนยันของคุณ BeforeSuite
และ AfterSuite
โหนดเพื่อเตรียมและทำความสะอาดหลังจากห้องสวีท ... และอีกมากมาย!
ที่รันไทม์ Ginkgo สามารถเรียกใช้ข้อมูลจำเพาะของคุณในลำดับที่สุ่มทำซ้ำและมีการสนับสนุนที่ซับซ้อนสำหรับการขนานข้อมูลจำเพาะ ในความเป็นจริงการรันสเป็คแบบขนานนั้นง่ายเหมือน
แปะก๊วย -p
โดยการติดตามรูปแบบที่กำหนดไว้สำหรับการเขียนสเป็คแบบขนานคุณสามารถสร้างห้องสวีทรวมที่ซับซ้อนขนาดใหญ่ที่มีขนาดใหญ่ซึ่งขนานกันและทำงานได้อย่างมีประสิทธิภาพ และคุณไม่ต้องกังวลเกี่ยวกับชุดข้อมูลจำเพาะของคุณแขวนหรือทิ้งความยุ่งเหยิงไว้ข้างหลัง - Ginkgo ให้บริบท context.Context
ที่กำหนดและความสามารถในการขัดจังหวะข้อมูลจำเพาะหลังจากระยะเวลาที่กำหนด - จากนั้นทำความสะอาด
ในขณะที่ห้องสวีทของคุณเติบโต Ginkgo ช่วยให้คุณจัดระเบียบสเป็คของคุณด้วยฉลากและช่วยให้คุณเรียกใช้ข้อมูลรายละเอียดย่อยได้อย่างง่ายดายไม่ว่าจะเป็นแบบโปรแกรมหรือในบรรทัดคำสั่ง และโครงสร้างพื้นฐานการรายงานของ Ginkgo จะสร้างเอาต์พุตที่อ่านได้ด้วยเครื่องในรูปแบบที่หลากหลาย และ ช่วยให้คุณสร้างโครงสร้างพื้นฐานการรายงานที่กำหนดเองของคุณเอง
Ginkgo จัดส่งด้วย ginkgo
เครื่องมือบรรทัดคำสั่งที่มีการสนับสนุนสำหรับการสร้างการทำงานการกรองและการทำโปรไฟล์ Ginkgo Suites คุณสามารถให้ Ginkgo เรียกใช้ข้อมูลจำเพาะของคุณโดยอัตโนมัติเมื่อตรวจจับการเปลี่ยนแปลงด้วย ginkgo watch
เพื่อให้สามารถวนลูปตอบรับได้อย่างรวดเร็วในระหว่างการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ
และนั่นเป็นเพียงแปะก๊วย! โกเมก้านำครอบครัวของการยืนยันและการจับคู่มาสู่ห้องสวีทของคุณ ด้วย Gomega คุณสามารถผสมผสานการยืนยันแบบซิงโครนัสและแบบอะซิงโครนัสในสเป็คของคุณได้อย่างง่ายดาย คุณยังสามารถสร้างชุดจับคู่เฉพาะโดเมนที่แสดงออกได้อย่างรวดเร็วและง่ายดายโดยการเขียนหน่วยการสร้างที่มีอยู่ของ Gomega
การทดสอบมีความสุข!
แปะก๊วยได้รับอนุญาตจาก MIT
ดูการสนับสนุน. md