为了账号安全,请及时绑定邮箱和手机立即绑定

如何为 beego 应用编写测试用例?

如何为 beego 应用编写测试用例?

Go
沧海一幻觉 2021-12-13 11:03:02
如何为 Beego 应用编写测试用例。正如我在 Beego 网站上看到的,他们有模型测试用例,但是控制器呢?任何可以提供帮助的框架?
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

我找到了一种使用ginkgo 的方法。


测试GET请求:


Describe("GET /login", func() {

    It("response has http code 200", func() {

        request, _ := http.NewRequest("GET", "/login", nil)

        response := httptest.NewRecorder()


        beego.BeeApp.Handlers.ServeHTTP(response, request)


        Expect(response.Code).To(Equal(http.StatusOK))

    })

})

测试POST请求:


Describe("POST /login", func() {

    Context("when passwords don't match", func() {

        It("informs about error", func() {

            form := url.Values{

                "password": {"foobar"},

                "password-confirmation": {"barfoo"},

            }

            body := strings.NewReader(form.Encode())

            request, _ := http.NewRequest("POST", "/login", body)

            request.Header.Add("Content-Type", "application/x-www-form-urlencoded")

            response := httptest.NewRecorder()


            beego.BeeApp.Handlers.ServeHTTP(response, request)


            Expect(response.Code).To(Equal(http.StatusOK))

            Expect(response.Body.String()).To(ContainSubstring("wrong passwords..."))

        })

    })

})

同样在BeforeSuite我需要初始化路由器和调用beego.TestBeegoInit(<APP_PATH>)


var _ = BeforeSuite(func() {

    routers.Initialize() // here calling router code

    beego.TestBeegoInit(AppPath())

})


查看完整回答
反对 回复 2021-12-13
?
暮色呼如

TA贡献1853条经验 获得超9个赞

这是一个 beego 示例项目。在 test 文件夹中,它展示了如何为控制器编写单元测试 https://github.com/goinggo/beego-mgo


查看完整回答
反对 回复 2021-12-13
  • 2 回答
  • 0 关注
  • 309 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信