Gomega ghttp返回500状态代码

时间:2016-05-20 14:54:44

标签: go ginkgo gomega

我已经使用Ginkgo / Gomega在Go中编写了一些测试,但无论我做什么,ghttp都会向我的客户端返回500状态而没有任何内容。以下是一些示例代码:

var _ = Describe("Client", func() {

    var (
        server *ghttp.Server
    )

    BeforeEach(func() {
        server = ghttp.NewServer()
        server.AllowUnhandledRequests = false
        server.Writer = GinkgoWriter
    })

    AfterEach(func() {
        server.Close()
    })

    Describe("fetching a node list", func() {

        BeforeEach(func() {

            server.AppendHandlers(
                ghttp.CombineHandlers(
                    ghttp.VerifyRequest("GET", "/nodes"),
                    ghttp.RespondWith(204, ""),
                ),
            )
        })

        It("should be able to fetch a node list", func() {
            response, err := myclient.Get(NODES)
            Ω(err).ShouldNot(HaveOccurred())
            Ω(response).ShouldNot(BeNil(), "No response was returned from nodes.")

            data, err := httputil.DumpResponse(response, true)
            Ω(err).ShouldNot(HaveOccurred())
            GinkgoWriter.Write(data)

            Ω(response.StatusCode).Should(Equal(204))
        })

    })

})

根据Gomega changelog

  

如果注册的处理程序发出失败的断言,ghttp将返回500。

     

如果注册的处理程序发生混乱,ghttp将返回500并且测试失败。

但是,我无法让这些测试失败,即使我发布到其他路线,删除附加处理程序调用等等。任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

希望OP能够解决这个问题,因为这已经很晚了。我遇到了同样的问题,所以要与遇到的其他人共享。

就我而言,我的 It 函数在 Context 函数之外,但是在编译时不会出现任何错误。在嵌套的描述中,您需要一个类似以下的结构:

Describe
  Context
    BeforeEach
    It

请注意,BeforeEach和It包含在上下文中的位置。

希望这对某人有帮助。