Задать вопрос
Ответы пользователя по тегу Node.js
  • Как правильно тестировать prisma?

    mimiseksimi
    @mimiseksimi
    В твоем текущем коде, вы только подменяете результаты вызовов методов ORM с помощью mockResolvedValue, и тестируете, что ваши обертки правильно обрабатывают эти результаты, вот примеры кода как можно тестировать, создание, удаление, обновление и чтение записей в бд:
    Тест создания записи в базе данных:
    test('createUser should create a new user in the database', async () => {
        const newUser = { email: 'user@prisma.io', name: 'Prisma Fan' };
        const createdUser = await prisma.user.create({
            data: newUser,
        });
        expect(createdUser).toBeDefined();
        expect(createdUser.email).toBe(newUser.email);
        expect(createdUser.name).toBe(newUser.name);
    });


    Тест чтения данных из базы данных:
    test('findUserById should retrieve a user from the database', async () => {
        const userId = 1; 
        const foundUser = await prisma.user.findUnique({
            where: { id: userId },
        });
        expect(foundUser).toBeDefined();
        expect(foundUser.id).toBe(userId);
    });


    Тест обновления данных в базе данных:
    test('updateUserName should update the user name in the database', async () => {
        const userId = 1; // предположим, что у вас есть запись с ID = 1
        const newName = 'Updated Name';
        const updatedUser = await prisma.user.update({
            where: { id: userId },
            data: { name: newName },
        });
        expect(updatedUser).toBeDefined();
        expect(updatedUser.name).toBe(newName);
    });


    Тест удаления данных из базы данных:
    test('deleteUser should remove a user from the database', async () => {
        const userId = 1; 
        await prisma.user.delete({
            where: { id: userId },
        });
        const deletedUser = await prisma.user.findUnique({
            where: { id: userId },
        });
        expect(deletedUser).toBeNull(); 
    });
    Ответ написан