package examples import ( "net/http" "net/http/httptest" "testing" "github.com/gavv/httpexpect" ) func TestFruits(t *testing.T) { handler := FruitsHandler() server := httptest.NewServer(handler) defer server.Close() e := httpexpect.New(t, server.URL) e.GET("/fruits"). Expect(). Status(http.StatusOK).JSON().Array().Empty() orange := map[string]interface{}{ "weight": 100, } e.PUT("/fruits/orange").WithJSON(orange). Expect(). Status(http.StatusNoContent).NoContent() apple := map[string]interface{}{ "colors": []interface{}{"green", "red"}, "weight": 200, } e.PUT("/fruits/apple").WithJSON(apple). Expect(). Status(http.StatusNoContent).NoContent() e.GET("/fruits"). Expect(). Status(http.StatusOK).JSON().Array().ContainsOnly("orange", "apple") e.GET("/fruits/orange"). Expect(). Status(http.StatusOK).JSON().Object().Equal(orange).NotEqual(apple) e.GET("/fruits/orange"). Expect(). Status(http.StatusOK). JSON().Object().ContainsKey("weight").ValueEqual("weight", 100) obj := e.GET("/fruits/apple"). Expect(). Status(http.StatusOK).JSON().Object() obj.Keys().ContainsOnly("colors", "weight") obj.Value("colors").Array().Elements("green", "red") obj.Value("colors").Array().Element(0).String().Equal("green") obj.Value("colors").Array().Element(1).String().Equal("red") obj.Value("weight").Number().Equal(200) e.GET("/fruits/melon"). Expect(). Status(http.StatusNotFound) }