1.1.0 • Published 11 months ago
@kidoweb/netron v1.1.0
Netron
Netron - это мощный Node.js модуль для тестирования компьютерных сетей, который сочетает в себе удобство Jest с функциональностью Postman. Модуль позволяет легко создавать и выполнять тесты сетевых запросов с богатым набором возможностей.
Особенности
- 🚀 Поддержка всех основных HTTP методов (GET, POST, PUT, DELETE, PATCH)
- 📊 Отслеживание истории запросов с метриками производительности
- 🔄 Перехватчики запросов и ответов
- 🔒 Встроенная поддержка аутентификации
- 🌐 Настройка прокси и редиректов
- ⏱️ Настраиваемые таймауты
- 🧪 Полная интеграция с Jest
- 📝 Подробное логирование и отладка
Установка
npm install netronИспользование
Базовое использование
const NetworkTester = require('netron');
describe('API Tests', () => {
let tester;
beforeEach(() => {
tester = new NetworkTester();
tester.setBaseURL('https://api.example.com');
});
test('should get user data', async () => {
const response = await tester.get('/users/1');
expect(response.status).toBe(200);
expect(response.data).toHaveProperty('name');
});
});Настройка заголовков и аутентификации
tester.setDefaultHeaders({
'Authorization': 'Bearer token123',
'Content-Type': 'application/json'
});
tester.setAuth({
username: 'user',
password: 'pass'
});Использование перехватчиков
// Перехватчик запросов
tester.addRequestInterceptor(config => {
config.headers['X-Custom-Header'] = 'value';
return config;
});
// Перехватчик ответов
tester.addResponseInterceptor(response => {
console.log(`Request to ${response.config.url} took ${response.duration}ms`);
return response;
});Отслеживание истории запросов
// Получение истории запросов
const history = tester.getRequestHistory();
console.log(history);
// Очистка истории
tester.clearRequestHistory();Настройка прокси и таймаутов
tester.setProxy({
host: 'proxy.example.com',
port: 8080
});
tester.setTimeout(5000); // 5 секунд
tester.setMaxRedirects(3);API
Основные методы
get(url, config)post(url, data, config)put(url, data, config)delete(url, config)patch(url, data, config)
Конфигурация
setBaseURL(baseURL)setDefaultHeaders(headers)setTimeout(timeout)setAuth(auth)setProxy(proxy)setMaxRedirects(maxRedirects)
Перехватчики
addRequestInterceptor(interceptor)addResponseInterceptor(interceptor)
История запросов
getRequestHistory()clearRequestHistory()
Примеры тестов
Тестирование REST API
describe('REST API Tests', () => {
let tester;
beforeEach(() => {
tester = new NetworkTester();
tester.setBaseURL('https://api.example.com');
});
test('CRUD operations', async () => {
// Create
const createResponse = await tester.post('/users', {
name: 'John Doe',
email: 'john@example.com'
});
expect(createResponse.status).toBe(201);
const userId = createResponse.data.id;
// Read
const getResponse = await tester.get(`/users/${userId}`);
expect(getResponse.status).toBe(200);
expect(getResponse.data.name).toBe('John Doe');
// Update
const updateResponse = await tester.put(`/users/${userId}`, {
name: 'John Updated'
});
expect(updateResponse.status).toBe(200);
expect(updateResponse.data.name).toBe('John Updated');
// Delete
const deleteResponse = await tester.delete(`/users/${userId}`);
expect(deleteResponse.status).toBe(200);
});
});Тестирование производительности
test('API performance', async () => {
const startTime = Date.now();
await tester.get('/users');
const history = tester.getRequestHistory();
const requestDuration = history[0].duration;
expect(requestDuration).toBeLessThan(1000); // Менее 1 секунды
});Лицензия
MIT