我正在学习 Jest,看起来这应该很简单,但我错过了树木的森林,并希望得到一些指导。
我正在使用Jest来测试快速路线。 快速路由位于文件/routes/index.js
中,它们各自调用文件/logic/index.js
中的相应逻辑函数。routes
和logic
目录彼此相邻,处于同一级别。
然后,我将一个__mocks__
目录放在目录logic
中,并在__mocks__
中创建一个index.js
文件
// logic/__mocks__/index.js
import clients from '../../../data/clients'
export const getUserForUserName = (name) => {
return Promise.resolve(()=> clients.filter(client => client.name === name) )
}
我在routes
内创建了一个__tests__
目录,并在其中放置了一个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__"
对我来说似乎很"硬连线",但我想它必须是这样的。 任何建议非常感谢。
您应该能够导入文件,而无需在路径名中使用__mocks__
。Jest 将处理解析以使用您的模拟而不是实际函数。
例如:
// routes/__tests_/index.js
jest.mock("../../logic");
import {getUserForUserName} from "../../logic"
这本质上与文档中带有"香蕉"的示例相同。