Soy nuevo en las pruebas de reacción y solo quería escribir una prueba para obtener datos API de un componente de reacción.
Aquí está mi componente que obtiene datos con éxito.
ListData.js
const ListData = () => { const [data, setData] = useState([]); const [searchValue, setSearchValue] = useState(""); useEffect(() => { axios .get("https://images-api.nasa.gov/search?media_type=image") .then((response) => { setData(response.data); }) .then( (response) => {}, (err) => { console.log(err); } ); }, []); }Y traté de escribir la prueba para el código anterior de la siguiente manera
import { rest } from "msw"; import { setupServer } from "msw/node"; import ListData from "./Components/ListData"; const body = { hello: "world" }; const server = setupServer( rest.get( "https://images-api.nasa.gov/search?media_type=image", (_, res, ctx) => { return res(ctx.status(200), ctx.json(body)); } ) ); describe("ListData", () => { beforeAll(() => server.listen()); afterEach(() => server.resetHandlers()); afterAll(() => server.close()); }); Pero recibí un error que dice que Your test suite must contain at least one test. , ¿Qué me perdí aquí?
te estás perdiendo exactamente lo que dice el error que te falta, una prueba. Si agrega alguna prueba, ese error desaparecerá.
describe("ListData", () => { beforeAll(() => server.listen()); afterEach(() => server.resetHandlers()); afterAll(() => server.close()); it('should do something', () => { expect(true).toBe(true) }) }); Además, le recomiendo que configure el servidor msw en un archivo de configuración de broma; de lo contrario, deberá repetir esta configuración en cada archivo de prueba:
// jest.config.js module.exports = { setupFilesAfterEnv: ['./jest.setup.js'], } // jest.setup.js import { server } from './mocks/server.js' // Establish API mocking before all tests. beforeAll(() => server.listen()) // Reset any request handlers that we may add during the tests, // so they don't affect other tests. afterEach(() => server.resetHandlers()) // Clean up after the tests are finished. afterAll(() => server.close())Puede seguir estos documentos: https://mswjs.io/docs/getting-started/integrate/node