Javascript 使用Jest从节点模块导入模拟函数的正确方法

Javascript 使用Jest从节点模块导入模拟函数的正确方法,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我在学笑话,看起来这应该很简单,但我真的很怀念森林,希望能得到一些指导 我用玩笑来测试快车路线。express routes位于文件/routes/index.js中,它们分别调用文件/logic/index.js中相应的逻辑函数路由和逻辑目录相邻,处于同一级别 然后我将一个\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu /

我在学笑话,看起来这应该很简单,但我真的很怀念森林,希望能得到一些指导

我用玩笑来测试快车路线。express routes位于文件
/routes/index.js
中,它们分别调用文件
/logic/index.js
中相应的逻辑函数<代码>路由和
逻辑
目录相邻,处于同一级别

然后我将一个
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

//  logic/__mocks__/index.js
import clients from '../../../data/clients'

export const getUserForUserName =  (name) => {
 return Promise.resolve(()=> clients.filter(client => client.name === name) )
}
我在
routes
中创建了一个
\uuuuuuu tests\uuuuuuu
目录,并在其中放置了一个
index.js
文件

// routes/__tests_/index.js
jest.mock("../../logic");
import {getUserForUserName} from "../../logic/__mocks__"


    it("gets correct data for user name", async () => {
  const data = await getUserForUserName("Ines");
  expect(data).toEqual([{"email": "inesblankenship@quotezart.com", "id": "4a0573eb-56d0-45d5-ab36-bebf33c5eb36", "name": "Ines", "role": "admin"}]);
});
这是正确的设置方法吗?线路

import {getUserForUserName} from "../../logic/__mocks__"

对我来说似乎是“硬连线”,但我想一定是这样的。非常感谢您的建议。

您应该能够导入文件,而不必在路径名中使用
\uuuumocks\uuuuu
。Jest将处理使用模拟而不是实际函数的解析

例如:

// routes/__tests_/index.js
jest.mock("../../logic");
import {getUserForUserName} from "../../logic"

这与文档中的“香蕉”示例基本相同。

谢谢。我试过了,但不管用。我会进一步调查…