Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chriskalmar/mock-mirror
Mock Mirror
https://github.com/chriskalmar/mock-mirror
Last synced: 2 months ago
JSON representation
Mock Mirror
- Host: GitHub
- URL: https://github.com/chriskalmar/mock-mirror
- Owner: chriskalmar
- License: mit
- Created: 2024-03-07T11:57:04.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-03-12T13:20:47.000Z (10 months ago)
- Last Synced: 2024-10-09T13:10:51.942Z (3 months ago)
- Language: TypeScript
- Size: 220 KB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
---
# Mock Mirror
Mock services behind your backend during integration tests.
## Install
Install **Mock Mirror** as a dev dependency:
```bash
npm install -D mock-mirror
```## Why
When writing integration tests, there are numerous ways to mock responses from your backend. This can be done directly in your tests (for example, in **Playwright**, **Cypress**, etc.) or by using tools like **Mock Service Worker**.
But what if your backend connects to other services and you would like to test your frontend and backend together while mocking those service responses?
With **Mock Mirror** you get a tiny prgrammable server which can be fed with mocks directly within your tests.
### Example
```ts
describe('user', () => {
it('should be able to fetch users from the user service', async ({ page }) => {
await mockMirror(async ({ addRoutes, scope }) => {
// Add a route to mock the user service
await addRoutes([
{
pathPattern: '/api/users/*',
response: {
id: 777,
username: 'johnwick',
firstname: 'John',
lastname: 'Wick',
},
},
]);// This will hit the backend, which will then connect to the mocked user service
await page.goto('http://localhost:3000/user/detail/777');await expect(page.getByText('Welcome, John Wick')).toBeVisible();
});
});
});
```## Development
To start the development server run:
```bash
bun run dev
```