Estoy desarrollando una aplicación de reservas y quiero usar la biblioteca fast-check para simular las condiciones de carrera en mi API. Básicamente, quiero simular el caso de uso en el que muchos usuarios llamarían a la misma API para reservar la misma mesa al mismo tiempo:
Supongamos que esta es mi API: POST /book con un cuerpo de solicitud como:
{ "table": 1, "time": "20:00" } Mi API de koa se parece a esto:
router .post('/book', (ctx) => { const { table, time } = ctx.request.body; const { isBooked } = await checkIfAvailable(table,time).body; // calls MongoDB if(!isBooked){ ctx.body = { table, time, booked: true }; } else { ctx.throw("This table is already booked", 404) } })Mi prueba se ve así:
mockedCheckIfAvailable.mockImplementation( s.scheduleFunction(async (table,time) => { return booking; }), ); const res = await request .post('/book') .set('Content-Type', 'application/json') .set('Accept', 'application/json') .send(booking); expect(res).toBe(true);Leí los documentos de Condiciones de carrera , pero no puedo entender cómo aplicarlo.