Skip to main content
Glama

Memory Bank MCP

testing-strategy.md3.27 kB
# Testing Strategy ## Overview This document outlines the testing strategy for the Memory Bank MCP project. ## Testing Approach The Memory Bank MCP project follows a comprehensive testing approach that includes: 1. **Unit Testing**: Testing individual components in isolation 2. **Integration Testing**: Testing the interaction between components 3. **Error Handling Testing**: Testing how the system handles error conditions 4. **Edge Case Testing**: Testing boundary conditions and unusual scenarios ## Testing Framework The project uses **Bun's built-in test runner** for all tests. This decision was made to: - Leverage Bun's speed and efficiency - Maintain consistency with the build tooling - Simplify the development environment - Reduce dependencies ## Test Organization Tests are organized in the `src/__tests__` directory, with test files named according to the component they test: - `fileUtils.test.ts`: Tests for the FileUtils class - `memoryBankManager.test.ts`: Tests for the MemoryBankManager class - `progressTracker.test.ts`: Tests for the ProgressTracker class - `clinerules-integration.test.ts`: Tests for the clinerules integration ## Test Patterns ### Setup and Teardown Each test file uses `beforeEach` and `afterEach` hooks to: 1. Create temporary test directories 2. Initialize test objects 3. Clean up after tests Example: ```typescript beforeEach(async () => { // Create temporary directory await fs.ensureDir(tempDir); // Initialize test objects testObject = new TestClass(); }); afterEach(async () => { // Clean up await fs.remove(tempDir); }); ``` ### Asynchronous Testing Asynchronous operations are tested using async/await: ```typescript test('Should perform async operation', async () => { const result = await asyncOperation(); expect(result).toBe(expectedValue); }); ``` ### Event Testing Events are tested using promises: ```typescript test('Should emit event', async () => { return new Promise<void>((resolve) => { emitter.on('event', (data) => { expect(data).toBe(expectedValue); resolve(); }); emitter.emit('event', value); }); }); ``` ### Error Testing Error conditions are tested using try/catch blocks: ```typescript test('Should handle errors', async () => { try { await operationThatShouldFail(); // Should not reach here expect(true).toBe(false); } catch (error) { expect(error).toBeTruthy(); } }); ``` ## Running Tests To run all tests: ```bash bun test ``` To run tests with coverage: ```bash bun test --coverage ``` To run a specific test file: ```bash bun test src/__tests__/fileUtils.test.ts ``` ## Coverage Goals The project aims for: - **Function Coverage**: 95%+ - **Line Coverage**: 90%+ ## Continuous Integration Future plans include setting up a CI/CD pipeline to: 1. Run tests automatically on each commit 2. Generate coverage reports 3. Fail builds if coverage drops below thresholds 4. Ensure all tests pass before merging changes ## Test Maintenance Tests should be maintained alongside code changes: 1. When adding new features, add corresponding tests 2. When fixing bugs, add regression tests 3. When refactoring code, update affected tests 4. Regularly review and improve test coverage

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/movibe/memory-bank-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server