実現したいこと
下記関数のテストをvitestで書きたいです
ts
1import { randomUUID } from "node:crypto"; 2 3export const getRandomUUID = (): string => { 4 return randomUUID(); 5}
発生している問題・分からないこと
上記関数に対して、下記のようなテストコードを書きました。
ts
1import { beforeEach, describe, expect, it, vi } from "vitest"; 2import { getRandomUUID } from "./utils"; 3 4vi.mock("node:crypto", () => { 5 return { 6 randomUUID: vi.fn(() => "mock-uuid"), 7 }; 8}); 9 10describe("getRandomUUID", () => { 11 it("mock-uuid", () => { 12 const uuid = getRandomUUID(); 13 14 expect(uuid).toBe("mock-uuid"); 15 }); 16});
すると、下記のようなエラーが出ました
bash
1Error: [vitest] No "default" export is defined on the "node:crypto" mock. Did you forget to return it from "vi.mock"? 2If you need to partially mock a module, you can use "importOriginal" helper inside:
よって、mock部分を下記のように書き換えました
ts
1vi.mock("node:crypto", async () => { 2 const actual = await vi.importActual<typeof import("node:crypto")>("node:crypto"); 3 return { 4 ...actual, 5 randomUUID: vi.fn(() => "mock-uuid"), 6 }; 7});
そうすると、次のようなエラーが出ました
bash
1AssertionError: expected '5cedbc46-aaaf-40f3-9943-fbaedb9da36b' to be 'mock-uuid' // Object.is equality 2 3- Expected 4+ Received 5 6- mock-uuid 7+ 5cedbc46-aaaf-40f3-9943-fbaedb9da36b
これはrandomUUIDを適切にモックできていないことから起きるAssertionErrorだと思うのですが解決方法がわからず、教えていただきたいです
エラーメッセージ
error
1上述の通り、エラーは解消されませんでした
該当のソースコード
TypeScript
1特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
特に解決方法が見つかりませんでした
補足
特になし
あなたの回答
tips
プレビュー