javascript - node:crypto-ის დაბრუნებული მნიშვნელობის მიბაძვა Vitest-ით
მე ვცადო კიდევ ერთ დაკავშირებულ პოსტზე ამ თემაზე შემქმნელის იგივე შედეგით.
ჩემს პოსტზე პასუხი გარდაიცვალა, მინდა კიდევ ერთხელ ვცადო, თუ ვინმეს აქვს იდეა, თუ როგორ უნდა მექომაგოს node:crypto ფუნქცია ან ნებისმიერი eingebuilt ფუნქცია.
ჩემი ძირითადი კეისის შესწავლა არის მარტივი randomUUID გენერატორი, უბრალოდ იმის გამოსაცდელად, რომ მაკინგი მუშაობს, ამიტომ მინდოდა randomUUID-ის მაკირება იმისათვის, რომ დაბრუნებულიყო ის მნიშვნელობა, რომელიც მინდოდა: "123456789"
import { randomUUID } from "node:crypto";
export function getRandomUUID() :string {
return randomUUID();
}
და მე დავიწყე, როგორც ზემოთ მოცემულ პოსტში შეთავაზებული გადაწყვეტილება:
vi.mock("node:crypto", async () => {
const actual =
await vi.importActual<typeof import("node:crypto")>("node:crypto");
return {
...actual,
randomUUID: vi.fn(() => "123456789"),
};
});
getRandomUUID ამ შემთხვევაში დაუდგენელს აბრუნებს
მე ასევე ვცადე მსგავსი სასაცილო გადაწყვეტა ამ პოსტზე
მაგრამ vitest წარუმატებელია იმპორტის შესახებ შეცდომით:
Error: [vitest] No "default" export is defined on the "node:crypto" mock. Did you forget to return it from "vi.mock"?
If you need to partially mock a module, you can use "importOriginal" helper inside:
vi.mock(import("node:crypto"), async (importOriginal) => {
const actual = await importOriginal()
return {
...actual,
// your mocked methods
}
})
უკვე სცადე ესეც ჩემი მაოკ მეთოდით (მაგრამ მაოკს არ მოსწონს randomUUID-ის დაბრუნების ტიპი Type 'string' is not assignable to type '$ {string}-$ {string}-$ {string}-$ {string}-$ {string}')
vi.mock(import("node:crypto"), async (importOriginal) => {
const actual = await importOriginal();
return {
actual,
// your mocked methods
randomUUID: vi.fn(() => "123456789"),
};
});
და არ ეცინი რეალურ მეთოდს
პასუხი #1
მინიათ ეს რაც ცდილობ გაიგო, მაგრამ დოკუმენტაციიდან მაგალითად სადაც ისინი მაკულირებენ pg, მე დავრჩი შემდეგით:
main.jsimport { randomUUID } from 'node:crypto'
export function getRandomUUID(): string {
return randomUUID()
}
main.test.jsimport { describe, expect, it, vi } from 'vitest'
import { getRandomUUID } from './main.js'
vi.mock('node:crypto', () => {
return { randomUUID: vi.fn(() => '123456789') }
})
describe('main', () => {
it('should be true', () => {
expect(getRandomUUID()).toBe('123456789')
})
})
გამოსავალი :
✓ main.test.ts (1 test) 2ms
✓ main > should be true
Test Files 1 passed (1)
Tests 1 passed (1)
Start at 10:38:42
Duration 11ms
