typescript - Poista vitestin aikakatkaisu käytöstä, kun debuggaat vscode:ssa
Kun työskentelen testin parissa, saatan suorittaa sen ja suorittaa sen uudelleen 100 kertaa debug-tilassa askelten kautta edeten, refaktoroiden ja tarkistaen tiettyjä asioita, mutta vitestin oletusaikakatkaisu on vain 5 sekuntia, eikä vitestin laajennuksessa ole (nähtäväkseni) mitään vaihtoehtoa, jonka avulla voisi asettaa vitestin test-timeout/testTimeout-arvon - tai ohittaa sen, kun VSCODE_INSPECTOR_OPTIONS on asetettu ympäristömuuttujiin.
Suosikkotapani testin virheenkorjaukseen on napsauttaa sitä hiiren oikealla painikkeella ja valita "Debug test"
Ja käytän vitest:in virallista vscode-laajennusta - https://marketplace.visualstudio.com/items?itemName=vitest.explorer
Löysin muutamia vaihtoehtoja, jotka toimivat, ensimmäinen on käytännössä tehdä heidän test uudelleen helper.js-tiedostossa, kuten
import { TestOptions, test as _test } from "vitest";
export function test(name: string, fn: any): void {
const options: TestOptions = {};
if (process.env.VSCODE_INSPECTOR_OPTIONS) {
options.timeout = 999999;
}
return _test(name, options, fn);
}
En pidä tästä, koska se on sotkuinen tarpeeton funktio, jossa tuon test-funktion helper-moduulista sen sijaan, että toisin sen vitest-moduulista.
Toinen on runner-luokassa, jossa asetetaan aikakatkaisu konfiguraatiossa kuten,
import { describe, expect, it } from "vitest";
import { rebuildLeaderboardScores } from "../lib/leaderboard";
const options = {
timeout: process.env.VSCODE_INSPECTOR_OPTIONS ? 999999 : 5000,
};
describe("leaderboard functions test set", options, () => {
it("rebuilding leaderboard attempt that doesn't exist fails", () => {
expect(() => rebuildLeaderboardScores("1")).toThrowError(/leaderboard/);
});
});
Taas, tämä toimii hyvin, mutta minun täytyy joko olla tuo vaihtoehto jokaisessa testitiedostossa, tai taas aputiedostossa ja tuoda se sieltä, mikä on mielestäni vain sotkuista ja haluaisin tehdä ilman sitä.
Viimeinen, todennäköisesti mieluisin tapa, jonka olen löytänyt, on laajentaa oletus vitest.config -tiedostosi ja asettaa test.testTimeout siellä näin,
import config from "./vitest.config";
config.test!.testTimeout = 999999;
export default config;
Ja sitten liitännäisen asetuksissa viittaa tähän tiedostoon sen sijaan, että käyttäisit tavallista asetustiedostoasi. Mielestäni tämä on mieluisin vaihtoehto, mutta minusta tuntuu silti, että on toinen vaihtoehto tai asetus, joka puuttuu ja on parempi. Se ei kuitenkaan todellisuudessa poista aikakatkaisua, ja se lisää silti pienen määrän ylimääräistä kuormitusta ylimääräisen tiedoston ja ylläpidon osalta.
Tiedän, että on olemassa joitakin tapoja asettaa test-timeout komentorivin kautta, mutta edes se ei tunnu toimivan oikein, kun debuggaan samalla tavalla kuin minä.
Ongelma molemmissa on se, että tuo timeout-muuttuja on siellä jokaisessa testisuorituksessa vscodessä, ei vain niissä, joita ajetaan virheenkorjauksessa/ei silloin kun VSCODE_INSPECTOR_OPTIONS on asetettu.
