httpt

package
v1.67.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2026 License: MIT Imports: 8 Imported by: 0

README

Package httpt

Пакет httpt предназначен для упрощения написания HTTP-тестов (юнит- и интеграционных) с использованием клиента и сервера на базе isp-kit.

Types

MockServer

Структура MockServer представляет собой обёртку над HTTP-сервером, позволяющую удобно мокать отдельные endpoint'ы с использованием endpoint.Wrapper и роутера router.Router.

Methods:

NewMock(t *test.Test) *MockServer

Создаёт MockServer, автоматически запускает сервер и регистрирует его закрытие в t.Cleanup. Подходит для юнит-тестов с ручной маршрутизацией и моками.

(m *MockServer) POST(path string, handler any) *MockServer

Регистрирует POST-обработчик на указанный путь.

(m *MockServer) GET(path string, handler any) *MockServer

Регистрирует GET-обработчик на указанный путь.

(m *MockServer) Mock(method string, path string, handler any) *MockServer

Регистрирует обработчик на указанный путь и метод с использованием Wrapper.Endpoint.

(m *MockServer) Client(opts ...httpcli.Option) *httpcli.Client

Создаёт HTTP-клиент, настроенный на тестовый сервер.

(m *MockServer) BaseURL() string

Возвращает базовый URL тестового сервера.

Functions

TestServer(t *test.Test, handler http.Handler, opts ...httpcli.Option) (*httptest.Server, *httpcli.Client)

Создаёт httptest.Server с указанным HTTP-обработчиком и возвращает его вместе с клиентом httpcli.Client. Подходит для end-to-end тестов.

Автоматически управляет закрытием ресурсов (srv.Close) по окончании теста.

Usage

Example usage in test
package mypkg_test

import (
	"net/http"
	"testing"

	"github.com/txix-open/isp-kit/http/httpt"
	"github.com/txix-open/isp-kit/test"
)

func TestExample(t *testing.T) {
	testCtx := test.New(t)
	srv, cli := httpt.TestServer(testCtx, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		_, _ = w.Write([]byte("ok"))
	}))

	resp, err := cli.Get("/")
	testCtx.Assert().NoError(err)
	testCtx.Assert().Equal(200, resp.StatusCode)
	testCtx.Assert().BodyEqual(resp, "ok")
	_ = srv // для дополнительных проверок, если нужно
}

Documentation

Overview

Package httpt provides test helpers for HTTP server and client operations. It creates mock HTTP servers on random local ports for testing.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func TestServer

func TestServer(t *test.Test, handler http.Handler, opts ...httpcli.Option) (*httptest.Server, *httpcli.Client)

TestServer creates and starts an HTTP test server with the provided handler, returning both the server and a configured client. The server listens on a random local port and the client is pre-configured with the server's URL.

Types

type MockServer

type MockServer struct {
	Wrapper endpoint.Wrapper
	// contains filtered or unexported fields
}

MockServer provides a mock HTTP server for testing. It uses httptest.Server and allows registering handlers for specific HTTP methods and paths.

func NewMock

func NewMock(t *test.Test) *MockServer

NewMock creates a new mock HTTP server. The server listens on a random local port and is automatically shut down when the test completes.

func (*MockServer) BaseURL

func (m *MockServer) BaseURL() string

BaseURL returns the base URL of the mock server.

func (*MockServer) Client

func (m *MockServer) Client(opts ...httpcli.Option) *httpcli.Client

Client creates a new HTTP client configured to send requests to the mock server's base URL. Optional client configuration can be provided.

func (*MockServer) GET

func (m *MockServer) GET(path string, handler any) *MockServer

GET registers a handler for GET requests at the specified path. Returns the MockServer for method chaining.

func (*MockServer) Mock

func (m *MockServer) Mock(method string, path string, handler any) *MockServer

Mock registers a handler for the specified HTTP method and path. Returns the MockServer for method chaining.

func (*MockServer) POST

func (m *MockServer) POST(path string, handler any) *MockServer

POST registers a handler for POST requests at the specified path. Returns the MockServer for method chaining.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL