Ложный экспресс.Рутер () с Jest - PullRequest
0 голосов
/ 17 февраля 2019

В моем тестируемом коде я хочу смоделировать router:

import * as express from "express";

const router = express.Router();    // I want to mock this
router.route(...).post(...);
router.route(...).get(...);

В моем тесте:

import * as express from "express";

test("foo", () => {
  jest.mock("express", () => {
    Router: () => jest.fn()
  });
  // ...test stuff
});

Но это не работает.Что я делаю не так?

1 Ответ

0 голосов
/ 17 февраля 2019

Модуль макета должен предшествовать импорту.В случае, если это происходит на верхнем уровне babel-jest, преобразование автоматически помещает jest.mock выше import.Это не может произойти, если вложено jest.mock.

Это должно быть либо:

import * as express from "express";

jest.mock("express", () => {
  Router: () => jest.fn()
});

...

Или:

test("foo", () => {
  jest.mock("express", () => {
    Router: () => jest.fn()
  });

  const express = require('express');
  // ...test stuff
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...