Ручное издевательство с использованием __mocks__ не работает

Я пытаюсь добавить несколько тестов в приложение узла, которое я разрабатываю. Я просмотрел шутливую документацию для ручного издевательства и попытался создать папку издевается в соответствии с инструкциями. Пожалуйста, ознакомьтесь со структурой папок ниже.

app
 - firebase
  - fb.js
  - __mocks__
    - fb.js
    - firebase-admin.js
 - resolvers
    - mutation.js
__tests__
 - user.spec.js

Как видите, я попытался смоделировать два модуля: fb.js (пользовательский модуль) и firebase-admin.js (модуль node_modules). Насмешка firebase-admin.js работает без проблем. Но макет пользовательского модуля даже не воспринимается как шутка. Фактический модуль fb.js вызывается все время.

Я попытался создать каталог издевается для различных пользовательских модулей в моем проекте, но ни один из них не подхватывается. Есть ли какая-то дополнительная конфигурация, которую мне не хватает ??. в настоящее время я работаю над этой проблемой, издеваясь только над модулем узла firebase-admin. Но я хочу издеваться над пользовательским модулем вместо модуля firebase-admin, чтобы мои конфигурации firebase также издевались. Пожалуйста, дайте мне знать, если потребуется дополнительная информация.

__mocks__/fb.js

module.exports = {
   auth: jest.fn(() => "testing")
};

__mocks__/fb-admin.js

module.exports = {};

__tests__/user.spec.js

const request = require('supertest');
const server = require('../app').createHttpServer({});

const app = request(server);

describe('login resolvers', () => {
  test('should sign up user', async () => {
    const response = await app.post('/')
      .send({
        query: `mutation {
          signUp(idToken: "esd45sdfd...") {
            user {
              id
              locked
              revoked
            }
          }
        }
        `,
      })
      .set('Accept', 'application/json')
      .expect(200);
    console.info(response.text);
  });
});

приложение/преобразователи/mutation.js

const admin = require('../firebase/fb');

/* other app code here */
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
9
0
15 142
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Из документы по ручным макетам:

When we require that module in our tests, then explicitly calling jest.mock('./moduleName') is required.

If the module you are mocking is a Node module (e.g.: lodash), the mock should be placed in the __mocks__ directory adjacent to node_modules (unless you configured roots to point to a folder other than the project root) and will be automatically mocked. There's no need to explicitly call jest.mock('module_name').

Спасибо. Я не требую издевательского модуля в своих тестах. Он используется внутри, когда выполняется тестовый код. Итак, согласно документации, явный jest.mock не требуется, верно?

Suneeth Lenin 11.04.2019 17:33

Нет. Вам нужно сказать jest, чтобы он издевался над модулем, когда этого требует sut.

user487779 11.04.2019 18:31

Это чрезвычайно запутанный разговор для чтения. Из ответа: «Нет необходимости явно вызывать jest.mock('module_name')». -> Комментарий: «явный jest.mock не требуется, верно?» -> Следующий комментарий: «Нет. Вам нужно сказать шутке, чтобы он издевался над модулем».

Marisha 31.03.2021 23:31

Я нахожусь в той же ситуации, когда мне не требуется издевательский модуль в моих тестах, но он используется внутри. Вызов jest.mock('module_name') не извлекает модуль из __mocks__. Но и отключение тоже ничего не дает. Каковы мои другие варианты?

Marisha 31.03.2021 23:32

Мариана. «Нет необходимости...», когда модуль узла. Оператор спрашивает о пользовательском модуле (а не о модуле узла) и, следовательно, требуется.

user487779 02.04.2021 09:26

Означает ли «рядом с node_modules», что вы помещаете каталог __mocks__ в родительскую папку «node_modules»?

Montana Burr 09.12.2021 00:28

Пришлось очень внимательно читать документацию. Особенно часть про «если вы не настроили корни так, чтобы они указывали на папку, отличную от корня проекта». Дважды проверьте, что вы настроили папку __mocks__ в исходной папке, которую вы указали для Jest.

Другие вопросы по теме