我已经使用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并且测试失败。
但是,我无法让这些测试失败,即使我发布到其他路线,删除附加处理程序调用等等。任何建议都将不胜感激!
答案 0 :(得分:0)
希望OP能够解决这个问题,因为这已经很晚了。我遇到了同样的问题,所以要与遇到的其他人共享。
就我而言,我的 It 函数在 Context 函数之外,但是在编译时不会出现任何错误。在嵌套的描述中,您需要一个类似以下的结构:
Describe
Context
BeforeEach
It
请注意,BeforeEach和It包含在上下文中的位置。
希望这对某人有帮助。