Как издеваться над Prisma (через прокси) в шутку 27

#jestjs #prisma #prisma-graphql

Вопрос:

Наша установка Prisma выглядит следующим образом:

 // server/database/prisma.ts

import { Prisma } from 'database/generated/prisma-client';

const client = new Prisma({
  endpoint: PRISMA_ENDPOINT,
  secret: PRISMA_SECRET,
  debug: PRISMA_DEBUG,
});

// Add a proxy 'middleware' to the Prisma client to record query execution time
const prismaProxy = new Proxy(client, {
  get(client, endpoint) {
    const endTimer = metrics.prisma_call_duration_seconds.startTimer({ endpoint });
    return function (...args) {
      const result: Prisma = client[endpoint](...args);
      endTimer();
      return resu<
    };
  },
});

export const prisma = prismaProxy;
 

Затем у меня есть утилита, которая использует prisma то, что я хотел бы протестировать:

 // utils.ts

import { prisma } from 'database/prisma';

export const myFunc = async () => {
  const result = await prisma.items();

  if (items amp;amp; items.length > 0) {
    return true;
  }

  return false;
}; 
 

Как мне высмеять prisma в тесте? В Шутку 26 это сработало:

 // utils.test.ts

jest.mock('server/database/prisma');

import { prisma } from 'server/database/prisma';
import { myFunc } from 'server/utils';

describe.only('my test', () => {
  beforeAll(() => {
    prisma.items.mockImplementation(() =>
      Promise.resolve([
        {
          foo: 'bar',
        },
      ])
    );
  });

  test('it works', async () => {
    const items = await myFunc();
    expect(items).toBeTruthy();
  });
});
 

Похоже, это больше не работает в шутку 27. Не внеся никаких изменений, кроме обновления Jest с v26 -> v27, насмешки, похоже, больше не действуют.

Как правильно prisma здесь издеваться?

Комментарии:

1. Какие ошибки вы конкретно получаете? Ты просто говоришь, что это не работает, не объяснив, как

2. @im_baby Я не получаю никаких ошибок. Код выполняется без проблем, но макет не выполняется, и код попадает в мой реальный экземпляр prisma, возвращая пустое значение из моей локальной базы данных, что затем приводит к сбою теста (поскольку он ожидает значений).