我已经用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 变化量g
如果已注册的处理程序产生错误的断言,那么ghttp将返回500。 如果注册处理程序出现恐慌,那么ghttp将返回500并失败测试。
但是,我不能让这些测试失败,即使我发布到一个不同的路由,删除附加的处理程序调用等。任何建议都将不胜感激!
发布于 2020-02-24 14:05:57
希望这次行动能解决这个问题,因为这场比赛太晚了。我也有过同样的问题,所以我和其他遇到过的人分享。
在我的例子中,我的It函数在上下文函数之外,但是在编译时不会收到任何错误。在嵌套的中描述,您需要这样的结构:
Describe
Context
BeforeEach
It注意BeforeEach和它包含在上下文中的位置。
希望这能帮上忙。
https://stackoverflow.com/questions/37349932
复制相似问题