Mock HTTP requests in unit tests

This commit is contained in:
2025-11-10 16:19:29 -08:00
parent 24681a7cbf
commit 1c9ff77b03
4 changed files with 1522 additions and 7 deletions

6
babel.config.js Normal file
View File

@@ -0,0 +1,6 @@
export default {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};

1497
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -13,9 +13,13 @@
"format": "prettier --write .", "format": "prettier --write .",
"lint": "prettier --check . && eslint .", "lint": "prettier --check . && eslint .",
"storybook": "storybook dev -p 6006", "storybook": "storybook dev -p 6006",
"build-storybook": "storybook build" "build-storybook": "storybook build",
"test": "jest"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.28.5",
"@babel/preset-env": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@chromatic-com/storybook": "^4.1.2", "@chromatic-com/storybook": "^4.1.2",
"@eslint/compat": "^1.4.0", "@eslint/compat": "^1.4.0",
"@eslint/js": "^9.38.0", "@eslint/js": "^9.38.0",
@@ -33,6 +37,7 @@
"@tailwindcss/vite": "^4.1.14", "@tailwindcss/vite": "^4.1.14",
"@types/node": "^24", "@types/node": "^24",
"axios-mock-adapter": "^2.1.0", "axios-mock-adapter": "^2.1.0",
"babel-jest": "^30.2.0",
"eslint": "^9.38.0", "eslint": "^9.38.0",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-storybook": "^10.0.5", "eslint-plugin-storybook": "^10.0.5",

View File

@@ -1,20 +1,27 @@
import { Axios } from 'axios'; import axios from 'axios';
import MockAdapter from 'axios-mock-adapter'; import MockAdapter from 'axios-mock-adapter';
import { HeaptraderAPI } from './api'; import { HeaptraderAPI } from './api';
import { expect, jest, test } from '@jest/globals'; import { expect, jest, test } from '@jest/globals';
let mock: MockAdapter;
class HeaptraderAPITest extends HeaptraderAPI class HeaptraderAPITest extends HeaptraderAPI
{ {
public _mock: MockAdapter;
constructor() constructor()
{ {
super(""); super("");
mock = new MockAdapter(this._axios); this._mock = new MockAdapter(axios);
this.setupMockResponses();
}
setupMockResponses(): void
{
this._mock.onGet("/up").reply(200, {});
} }
} }
test('check uptime', async () => { test('check uptime', async () => {
const api = new HeaptraderAPI(); const api = new HeaptraderAPITest();
await api.heartbeat(); const success = await api.heartbeat();
expect(success).toBe(true);
}); });