मैं कोशिश कर रहा हूँ का परीक्षण करने के लिए एक समारोह है कि setTimeout
एक वादा है । हालांकि यह रहता है समय ।
इस समारोह है:
export const sleep = async (duration: number): Promise<void> => {
await new Promise<void>((resolve) => {
setTimeout(resolve, duration);
});
if (process.env.NODE_ENV === "test") {
console.log("sleep end");
}
};
और यह मेरे परीक्षण:
import { sleep } from "../../helpers/utils";
console.log = jest.fn();
jest.useFakeTimers();
test("calls sleep with correct argument and calls console.log", async () => {
const NODE_ENV = "test";
const SLEEP_DURATION = "100";
process.env = { ...process.env, NODE_ENV, SLEEP_DURATION };
const timeoutSpy = jest.spyOn(global, "setTimeout");
await sleep(+SLEEP_DURATION);
jest.runAllTimers();
expect(sleep).toHaveBeenCalledWith(+SLEEP_DURATION);
expect(timeoutSpy).toHaveBeenCalledWith(+SLEEP_DURATION);
expect(console.log).toHaveBeenCalledWith("sleep end");
});
समस्या यह है कि जब मैं कोशिश इस चलाने के लिए परीक्षण विफल रहता है और यह संदेश देता है:
thrown: "Exceeded timeout of 5000 ms for a test.
Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."
मैंने कोशिश की है jest.setTimeout(10000)
जो सिर्फ एक त्रुटि फेंकता के Exceeded timeout of 10000ms ...
किसी भी विचार के रूप में करने के लिए क्यों हो रहा है? या कैसे इसे ठीक करने के लिए?
धन्यवाद!