Ручная насмешка с использованием __mocks__ не работает - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь добавить несколько тестов к разрабатываемому приложению узла.Я просмотрел документацию для ручного издевательства и попытался создать папку 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 mocking работает без проблем.Но издевательство над пользовательским модулем даже не шутит.Фактический модуль fb.js вызывается все время.

Я пытался создать каталог mocks для различных пользовательских модулей в моем проекте, но ни один из них не поднимается.Есть ли какая-то дополнительная конфигурация, которую я пропускаю ??В настоящее время я работаю над этой проблемой, только издеваясь над модулем узла 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.log(response.text);
  });
});

app / resolvers / mutation.js

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

/* other app code here */

1 Ответ

1 голос
/ 11 апреля 2019

Из документов:

Когда нам требуется этот модуль в наших тестах, требуется явный вызов jest.mock ('./ moduleName').

Если модуль, над которым вы работаете, является модулем Node (например, lodash), макет должен быть помещен в каталог mocks рядом с node_modules (если только вы не настроили корневые каталоги для указания на папку, отличную откорень проекта) и будет автоматически издеваться. Нет необходимости явно вызывать jest.mock ('имя_модуля').

...