{"record":{"id":"47586f3233480fe8","repo":"marmelab/react-admin","slug":"getmany-is-not-implemented","errorCode":null,"errorMessage":"getMany is not implemented","messagePattern":"getMany is not implemented","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/ra-core/src/dataProvider/testDataProvider.ts","lineNumber":26,"sourceCode":" *    getOne: async () => ({ data: { id: 123, title: 'foo' }})\n * })\n */\n\nconst defaultTestDataProvider: DataProvider = {\n    create: async () => {\n        throw new Error('create is not implemented');\n    },\n    delete: async () => {\n        throw new Error('delete not implemented');\n    },\n    deleteMany: async () => {\n        throw new Error('deleteMany is not implemented');\n    },\n    getList: async () => {\n        throw new Error('getList is not implemented');\n    },\n    getMany: async () => {\n        throw new Error('getMany is not implemented');\n    },\n    getManyReference: async () => {\n        throw new Error('getManyReference is not implemented');\n    },\n    getOne: async () => {\n        throw new Error('getOne is not implemented');\n    },\n    update: async () => {\n        throw new Error('update not implemented');\n    },\n    updateMany: async () => {\n        throw new Error('updateMany not implemented');\n    },\n};\nexport const testDataProvider = (\n    overrides?: Partial<DataProvider>\n): DataProvider => ({\n    ...defaultTestDataProvider,","sourceCodeStart":8,"sourceCodeEnd":44,"githubUrl":"https://github.com/marmelab/react-admin/blob/051f511bb0afb5ea565c2d3728bf4dab0a6fa5e0/packages/ra-core/src/dataProvider/testDataProvider.ts#L8-L44","documentation":"testDataProvider's default getMany throws unless overridden, failing fast when a test fetches multiple records without providing them.","triggerScenarios":"Calls via useGetMany, useGetManyReference consumers (ReferenceArrayField, ReferenceManyField), or any code path invoking dataProvider.getMany with testDataProvider() unstubbed.","commonSituations":"Tests rendering ReferenceArrayField without stubbing; prefetch logic fetching many records in unit tests; stubbing getOne but not getMany while the component uses ids arrays.","solutions":["Stub getMany: testDataProvider({ getMany: async () => ({ data: [...] }) })","Provide resource fixtures via mockProvider({ posts: [...] })","Stub the specific reference fields' queries in the component under test"],"exampleFix":"// before\nconst dataProvider = testDataProvider();\n// after\nconst dataProvider = testDataProvider({\n  getMany: async () => ({ data: [{ id: 1 }, { id: 2 }] }),\n});","handlingStrategy":"try-catch","validationCode":"if (!dataProviderOverrides.getMany) throw new Error('test must stub getMany');","typeGuard":null,"tryCatchPattern":"try { await dataProvider.getMany(r, { ids }); } catch (e) { /* stub getMany */ throw e; }","preventionTips":["Stub getMany when rendering ReferenceArrayField","Remember Reference* fields use getMany/getManyReference, not getOne","Centralize data fixtures in one testDataProvider factory"],"tags":["react-admin","testing","data-provider"],"backgroundTag":"unimplemented-method","analyzedSha":"051f511bb0afb5ea565c2d3728bf4dab0a6fa5e0","analyzedAt":"2026-08-30T02:28:14.926Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}