Издевательский узел: крипта с VitestJavascript

Форум по Javascript
Ответить
Anonymous
 Издевательский узел: крипта с Vitest

Сообщение Anonymous »

Я попробовал подписаться на другой похожий пост на эту тему, но результат у автора тот же.
Поскольку этот пост неактуален, я хотел бы попробовать еще раз, если у кого-то есть идеи, как высмеять функцию node:crypto или любую встроенную функцию.
Мое базовое исследование представляет собой простой генератор случайных UUID, просто чтобы проверить, работает ли насмешка:

Код: Выделить всё

import { randomUUID } from "node:crypto";

export function getRandomUUID() :string {
return randomUUID();
}
и я попробовал предложенное решение, как в приведенном выше сообщении:

Код: Выделить всё

 vi.mock("node:crypto", async () => {
const actual =
await vi.importActual("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, хотя тип «строка» не может быть присвоен типу '$) {строка}-${строка}-${строка}-${строка}-${строка})

Код: Выделить всё

    vi.mock(import("node:crypto"), async (importOriginal) => {
const actual = await importOriginal();
return {
actual,
// your mocked methods
randomUUID: vi.fn(() => "123456789"),
};
});
и не высмеивает реальный метод

Подробнее здесь: https://stackoverflow.com/questions/793 ... ith-vitest
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»