Итак, у меня есть этот тест в моем проекте TypeScript, и когда я выполняю мак -тест, два теста не провалили, что все проблемы связаны с TypeError [Error]: невозможно переопределить свойство: FetchAndnormalizePullRequests Я все время смотрел и не смог найти способ решить проблему. Это < /p>
pull-request.handler.test.ts
< /blockquote>
import { test, describe, beforeEach, afterEach, mock } from 'node:test';
import assert from 'node:assert';
import type { Request, Response } from 'express';
import { getAllPullRequests } from '../../handlers/pull-requests.handler.js';
const originalEnv = process.env;
// const pullRequestsService = await import('../../services/pull-requests.service.js');
describe('Pull Requests Handler', () => {
let mockReq: Partial;
let mockRes: Partial;
let statusMock: any;
let jsonMock: any;
let fetchMock: any;
beforeEach(() => {
mock.restoreAll();
statusMock = mock.fn(() => mockRes);
jsonMock = mock.fn();
mockRes = {
status: statusMock,
json: jsonMock
};
process.env = { ...originalEnv };
});
afterEach(() => {
process.env = originalEnv;
mock.restoreAll();
});
test('should return 500 when GITHUB_API_TOKEN is missing', async () => {
delete process.env.GITHUB_API_TOKEN;
mockReq = {
query: { owner: 'testowner', repo: 'testrepo' }
};
await getAllPullRequests(mockReq as Request, mockRes as Response);
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [500]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [{ error: 'Missing environment variables.' }]);
});
test('should return 500 when owner is missing', async () => {
process.env.GITHUB_API_TOKEN = 'test-token';
mockReq = {
query: { repo: 'testrepo' }
};
try{
await getAllPullRequests(mockReq as Request, mockRes as Response);
}
catch(e){
console.error(e);
}
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [500]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [{ error: 'Missing environment variables.' }]);
});
test('should return 500 when repo is missing', async () => {
process.env.GITHUB_API_TOKEN = 'test-token';
mockReq = {
query: { owner: 'testowner' }
};
await getAllPullRequests(mockReq as Request, mockRes as Response);
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [500]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [{ error: 'Missing environment variables.' }]);
});
test('should return 200 with pull requests when all parameters are valid', async () => {
process.env.GITHUB_API_TOKEN = 'test-token';
mockReq = {
query: { owner: 'testowner', repo: 'testrepo' }
};
const mockPullRequests = [
{
prNumber: 1,
title: 'Test PR',
creator: 'testuser',
creationTimestamp: '2024-01-01T00:00:00Z',
requestedReviewers: ['reviewer1'],
lastActionType: 'open',
lastActionTimestamp: '2024-01-01T00:00:00Z'
}
];
const fetchMock = mock.fn(() => Promise.resolve(mockPullRequests));
mock.method(await import('../../services/pull-requests.service.js'), 'fetchAndNormalizePullRequests', fetchMock);
await getAllPullRequests(mockReq as Request, mockRes as Response);
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [200]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [mockPullRequests]);
});
test('should return 500 when service throws an error', async () => {
process.env.GITHUB_API_TOKEN = 'test-token';
mockReq = {
query: { owner: 'testowner', repo: 'testrepo' }
};
const fetchMock = mock.fn(() => Promise.reject(new Error('Service error')));
mock.method(await import('../../services/pull-requests.service.js'), 'fetchAndNormalizePullRequests', fetchMock);
await getAllPullRequests(mockReq as Request, mockRes as Response);
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [500]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [{ error: 'Internal server error.' }]);
});
});
< /code>
И это моя функция fetchandnormalizepullRequest < /p>
import axios from 'axios';
import type{ NormalizedPR } from '../types/types.js';
export const fetchAndNormalizePullRequests = async (owner: string, repo: string, token: string): Promise => {
const url = `https://api.github.com/repos/${owner}/$ ... ?state=all`;
try {
const response = await axios.get(url, {
headers: {
Authorization: `token ${token}`,
'Content-Type': 'application/json',
},
});
return response.data.map((pr: any) => ({
prNumber: pr.number,
title: pr.title,
creator: pr.user.login,
creationTimestamp: pr.created_at,
requestedReviewers: pr.requested_reviewers.map((reviewer: any) => reviewer.login),
lastActionType: pr.merged_at ? 'merged' : pr.state,
lastActionTimestamp: pr.updated_at,
}));
} catch (error) {
throw new Error('Failed to fetch pull requests from GitHub API.');
}
};
< /code>
Что я делаю не так? не могу решить проблему
Подробнее здесь: https://stackoverflow.com/questions/797 ... e-property
Тест узла TypeScript не может быть изменен свойство? ⇐ Javascript
Форум по Javascript
-
Anonymous
1758552145
Anonymous
Итак, у меня есть этот тест в моем проекте TypeScript, и когда я выполняю мак -тест, два теста не провалили, что все проблемы связаны с TypeError [Error]: невозможно переопределить свойство: FetchAndnormalizePullRequests Я все время смотрел и не смог найти способ решить проблему. Это < /p>
pull-request.handler.test.ts
< /blockquote>
import { test, describe, beforeEach, afterEach, mock } from 'node:test';
import assert from 'node:assert';
import type { Request, Response } from 'express';
import { getAllPullRequests } from '../../handlers/pull-requests.handler.js';
const originalEnv = process.env;
// const pullRequestsService = await import('../../services/pull-requests.service.js');
describe('Pull Requests Handler', () => {
let mockReq: Partial;
let mockRes: Partial;
let statusMock: any;
let jsonMock: any;
let fetchMock: any;
beforeEach(() => {
mock.restoreAll();
statusMock = mock.fn(() => mockRes);
jsonMock = mock.fn();
mockRes = {
status: statusMock,
json: jsonMock
};
process.env = { ...originalEnv };
});
afterEach(() => {
process.env = originalEnv;
mock.restoreAll();
});
test('should return 500 when GITHUB_API_TOKEN is missing', async () => {
delete process.env.GITHUB_API_TOKEN;
mockReq = {
query: { owner: 'testowner', repo: 'testrepo' }
};
await getAllPullRequests(mockReq as Request, mockRes as Response);
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [500]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [{ error: 'Missing environment variables.' }]);
});
test('should return 500 when owner is missing', async () => {
process.env.GITHUB_API_TOKEN = 'test-token';
mockReq = {
query: { repo: 'testrepo' }
};
try{
await getAllPullRequests(mockReq as Request, mockRes as Response);
}
catch(e){
console.error(e);
}
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [500]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [{ error: 'Missing environment variables.' }]);
});
test('should return 500 when repo is missing', async () => {
process.env.GITHUB_API_TOKEN = 'test-token';
mockReq = {
query: { owner: 'testowner' }
};
await getAllPullRequests(mockReq as Request, mockRes as Response);
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [500]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [{ error: 'Missing environment variables.' }]);
});
test('should return 200 with pull requests when all parameters are valid', async () => {
process.env.GITHUB_API_TOKEN = 'test-token';
mockReq = {
query: { owner: 'testowner', repo: 'testrepo' }
};
const mockPullRequests = [
{
prNumber: 1,
title: 'Test PR',
creator: 'testuser',
creationTimestamp: '2024-01-01T00:00:00Z',
requestedReviewers: ['reviewer1'],
lastActionType: 'open',
lastActionTimestamp: '2024-01-01T00:00:00Z'
}
];
const fetchMock = mock.fn(() => Promise.resolve(mockPullRequests));
mock.method(await import('../../services/pull-requests.service.js'), 'fetchAndNormalizePullRequests', fetchMock);
await getAllPullRequests(mockReq as Request, mockRes as Response);
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [200]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [mockPullRequests]);
});
test('should return 500 when service throws an error', async () => {
process.env.GITHUB_API_TOKEN = 'test-token';
mockReq = {
query: { owner: 'testowner', repo: 'testrepo' }
};
const fetchMock = mock.fn(() => Promise.reject(new Error('Service error')));
mock.method(await import('../../services/pull-requests.service.js'), 'fetchAndNormalizePullRequests', fetchMock);
await getAllPullRequests(mockReq as Request, mockRes as Response);
assert.strictEqual(statusMock.mock.callCount(), 1);
assert.deepStrictEqual(statusMock.mock.calls[0].arguments, [500]);
assert.strictEqual(jsonMock.mock.callCount(), 1);
assert.deepStrictEqual(jsonMock.mock.calls[0].arguments, [{ error: 'Internal server error.' }]);
});
});
< /code>
И это моя функция fetchandnormalizepullRequest < /p>
import axios from 'axios';
import type{ NormalizedPR } from '../types/types.js';
export const fetchAndNormalizePullRequests = async (owner: string, repo: string, token: string): Promise => {
const url = `https://api.github.com/repos/${owner}/${repo}/pulls?state=all`;
try {
const response = await axios.get(url, {
headers: {
Authorization: `token ${token}`,
'Content-Type': 'application/json',
},
});
return response.data.map((pr: any) => ({
prNumber: pr.number,
title: pr.title,
creator: pr.user.login,
creationTimestamp: pr.created_at,
requestedReviewers: pr.requested_reviewers.map((reviewer: any) => reviewer.login),
lastActionType: pr.merged_at ? 'merged' : pr.state,
lastActionTimestamp: pr.updated_at,
}));
} catch (error) {
throw new Error('Failed to fetch pull requests from GitHub API.');
}
};
< /code>
Что я делаю не так? не могу решить проблему
Подробнее здесь: [url]https://stackoverflow.com/questions/79771747/typescript-node-test-cannot-redifine-property[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия