TL;DR
Go のマッチャ・アサーションライブラリ。Ginkgo と同じエンジニアが開発している。
仕組み
公式ドキュメントでは、Ginkgo と組み合わせるのが最もよいとされているが、Go 標準の testing パッケージでも使える。
Expect は同期的なアサーションを行う。Expect(ACTUAL).To(Equal(EXPECTED)) のように、実際の値とマッチャを渡す。Eventually は非同期の処理を確かめるためのもので、アサーションが通るかタイムアウトするまで繰り返し確認する。
マッチャ(Equal、BeTrue、HaveOccurred など)はただの関数である。And、Or、Not で組み合わせたり、自分で作ったりできる。
例
testing パッケージと使うときは、NewWithT(t) でラップする。
func TestFarmHasCow(t *testing.T) {
g := NewWithT(t)
f := farm.New([]string{"Cow", "Horse"})
g.Expect(f.HasCow()).To(BeTrue(), "Farm should have cow")
}