Javascript 使用Jest从节点模块导入模拟函数的正确方法
我在学笑话,看起来这应该很简单,但我真的很怀念森林,希望能得到一些指导 我用玩笑来测试快车路线。express routes位于文件Javascript 使用Jest从节点模块导入模拟函数的正确方法,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我在学笑话,看起来这应该很简单,但我真的很怀念森林,希望能得到一些指导 我用玩笑来测试快车路线。express routes位于文件/routes/index.js中,它们分别调用文件/logic/index.js中相应的逻辑函数路由和逻辑目录相邻,处于同一级别 然后我将一个\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu /
/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"
这与文档中的“香蕉”示例基本相同。谢谢。我试过了,但不管用。我会进一步调查…