Как подойти к написанию тестовых случаев для приложения Beego. Как я вижу на веб-сайте Beego, у них есть тестовый пример модели, но как насчет контроллеров?
Любая структура, которая может помочь?
Как подойти к написанию тестовых случаев для приложения Beego. Как я вижу на веб-сайте Beego, у них есть тестовый пример модели, но как насчет контроллеров?
Любая структура, которая может помочь?
Я нашел один подход с использованием 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())
})
Это пример проекта beego. В тестовой папке показано, как написать модульный тест для контроллеров https://github.com/goinggo/beego-mgo