最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

嘲笑express.Router()

IT培训 admin 5浏览 0评论

嘲笑express.Router()

在我的测试代码中,我想模拟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
});

但是那不起作用。我在做什么错?

回答如下:

模块模拟应该在导入之前。如果这发生在顶级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
});

嘲笑express.Router()

在我的测试代码中,我想模拟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
});

但是那不起作用。我在做什么错?

回答如下:

模块模拟应该在导入之前。如果这发生在顶级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
});

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论