#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, возвращая пустое значение из моей локальной базы данных, что затем приводит к сбою теста (поскольку он ожидает значений).