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

  1. Stub getMany: testDataProvider({ getMany: async () => ({ data: [...] }) })
  2. Provide resource fixtures via mockProvider({ posts: [...] })
  3. 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

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


AI-assisted analysis of marmelab/react-admin@051f511bb0 (2026-08-30). Data as JSON: /api/errors/47586f3233480fe8. Report an issue: GitHub.