43 lines
991 B
TypeScript
43 lines
991 B
TypeScript
import { HttpResponse, http } from 'msw';
|
|
import { SetupServer, setupServer } from 'msw/node';
|
|
|
|
export class JsonTestServer {
|
|
readonly server: SetupServer;
|
|
|
|
responseBodyJson: any = {};
|
|
|
|
request: Request | undefined;
|
|
|
|
constructor(url: string) {
|
|
const responseBodyJson = () => this.responseBodyJson;
|
|
|
|
this.server = setupServer(
|
|
http.post(url, ({ request }) => {
|
|
this.request = request;
|
|
|
|
return HttpResponse.json(responseBodyJson());
|
|
}),
|
|
);
|
|
}
|
|
|
|
async getRequestBodyJson() {
|
|
expect(this.request).toBeDefined();
|
|
return JSON.parse(await this.request!.text());
|
|
}
|
|
|
|
async getRequestHeaders() {
|
|
expect(this.request).toBeDefined();
|
|
return this.request!.headers;
|
|
}
|
|
|
|
setupTestEnvironment() {
|
|
beforeAll(() => this.server.listen());
|
|
beforeEach(() => {
|
|
this.responseBodyJson = {};
|
|
this.request = undefined;
|
|
});
|
|
afterEach(() => this.server.resetHandlers());
|
|
afterAll(() => this.server.close());
|
|
}
|
|
}
|