我正在学习Jest,看来这应该很简单,但我想念树木的森林不见了,不胜感激。
我正在使用Jest测试Express路线。快速路由位于文件/routes/index.js
中,它们各自调用文件/logic/index.js
中的相应逻辑功能。 routes
和logic
目录在同一级别上彼此相邻。
然后我在目录__mocks__
内放置一个logic
目录,并在index.js
内创建一个__mocks__
文件
// logic/__mocks__/index.js
import clients from '../../../data/clients'
export const getUserForUserName = (name) => {
return Promise.resolve(()=> clients.filter(client => client.name === name) )
}
我在__tests__
内创建一个routes
目录,并在其中放置一个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__"
对我来说似乎“硬连线”,但我想必须是这种方式。任何建议,不胜感激。
答案 0 :(得分:1)
您应该完全可以在路径名中完全不使用&(?=[^<>]*</)
的情况下导入文件。 Jest将处理解析以使用您的模拟而不是实际功能。
例如:
__mocks__
从本质上讲,这与文档中带有“香蕉”的示例相同。