marmelab/react-admin · error · Error
getMany is not implemented
Error message
getMany is not implemented
What it means
testDataProvider's default getMany throws unless overridden, failing fast when a test fetches multiple records without providing them.
Source
Thrown at packages/ra-core/src/dataProvider/testDataProvider.ts:26
* getOne: async () => ({ data: { id: 123, title: 'foo' }})
* })
*/
const defaultTestDataProvider: DataProvider = {
create: async () => {
throw new Error('create is not implemented');
},
delete: async () => {
throw new Error('delete not implemented');
},
deleteMany: async () => {
throw new Error('deleteMany is not implemented');
},
getList: async () => {
throw new Error('getList is not implemented');
},
getMany: async () => {
throw new Error('getMany is not implemented');
},
getManyReference: async () => {
throw new Error('getManyReference is not implemented');
},
getOne: async () => {
throw new Error('getOne is not implemented');
},
update: async () => {
throw new Error('update not implemented');
},
updateMany: async () => {
throw new Error('updateMany not implemented');
},
};
export const testDataProvider = (
overrides?: Partial<DataProvider>
): DataProvider => ({
...defaultTestDataProvider,View on GitHub (pinned to 051f511bb0)
Solutions
- Stub getMany: testDataProvider({ getMany: async () => ({ data: [...] }) })
- Provide resource fixtures via mockProvider({ posts: [...] })
- Stub the specific reference fields' queries in the component under test
Example fix
// before
const dataProvider = testDataProvider();
// after
const dataProvider = testDataProvider({
getMany: async () => ({ data: [{ id: 1 }, { id: 2 }] }),
}); Defensive patterns
Strategy: try-catch
Validate before calling
if (!dataProviderOverrides.getMany) throw new Error('test must stub getMany'); Try / catch
try { await dataProvider.getMany(r, { ids }); } catch (e) { /* stub getMany */ throw e; } Prevention
- Stub getMany when rendering ReferenceArrayField
- Remember Reference* fields use getMany/getManyReference, not getOne
- Centralize data fixtures in one testDataProvider factory
When it happens
Trigger: Calls via useGetMany, useGetManyReference consumers (ReferenceArrayField, ReferenceManyField), or any code path invoking dataProvider.getMany with testDataProvider() unstubbed.
Common situations: Tests rendering ReferenceArrayField without stubbing; prefetch logic fetching many records in unit tests; stubbing getOne but not getMany while the component uses ids arrays.
Related errors
- create is not implemented
- delete not implemented
- deleteMany is not implemented
- getList is not implemented
- getManyReference is not implemented
AI-assisted analysis of marmelab/react-admin@051f511bb0 (2026-08-30).
Data as JSON: /api/errors/47586f3233480fe8.
Report an issue: GitHub.