嘲笑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
});