[英]Correct way to import mocked functions from node modules using Jest
我正在學習Jest,看來這應該很簡單,但是我想念樹木的森林不勝枚舉,不勝感激。
我正在使用Jest測試Express路由。 快遞航線在文件/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"
從本質上講,這與文檔中帶有“ banana”的示例相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.