Guide - Så gör du när du inte vill köra alla tester varje gång
Kursens uppgifter använder Vitest för enhetstester. Precis som med Jest kan du begränsa vilka tester som körs genom att filtrera på testnamn — praktiskt när du bara vill fokusera på en del av uppgiften i taget.
-
Öppna
package.jsonoch lägg till skriptet"test:only": "vitest run -t"efter"test:run"(glöm inte att lägga till ett kommatecken efter det näst sista skriptet).{"name": "assignment-a2","version": "1.2.0","description": "1DV025 - Assignment A2","type": "module","main": "src/app.js","scripts": {"start": "node src/app.js","test": "vitest","test:run": "vitest run","test:only": "vitest run -t","lint": "eslint ./src --cache","lint:fix": "eslint ./src --cache --fix"},... -
Spara
package.json-filen. -
Kör alla tester med
npm run test:runoch studera resultatet. Varje misslyckat test listas med hela sin namnkedja, till exempelaverage > argument > exceptions > .... Det är dessa namnsegment — som average, argument och exceptions — som kan användas för att begränsa vilka tester som ska köras.> assignment-a2@1.2.0 test:run> vitest runRUN v4.1.7 /home/en999zz/kurser/1dv025/examination/assignment-a2❯ test/statistics.test.js (70 tests | 10 failed) 45ms× passing anything but an array should throw TypeError with the custom message 'The passed argument is not an array.' 6ms× passing an empty array should throw Error with the custom message 'The passed array contains no elements.' 2ms× passing an array containing a value that is not of the type number should throw TypeError with the custom message 'The passed array may only contain valid numbers.' 2ms× passing an array containing the value Number.NaN should throw TypeError with the custom message 'The passed array may only contain valid numbers.' 1ms× passing [-2, 5, 1, 1, 5, 5, 2, -2, 2, -2] should return 1.5 1ms× passing [-42, -84, -2, -3] should return -32.75 0ms× passing anything but an array should throw TypeError with the custom message 'The passed argument is not an array.' 0ms⎯⎯⎯⎯⎯⎯⎯ Failed Tests 10 ⎯⎯⎯⎯⎯⎯⎯FAIL test/statistics.test.js > average > argument > exceptions > passing anything but an array should throw TypeError with the custom message 'The passed argument is not an array.'AssertionError: expected function to throw an error, but it didn'tFAIL test/statistics.test.js > average > argument > exceptions > passing an empty array should throw Error with the custom message 'The passed array contains no elements.'AssertionError: expected function to throw an error, but it didn'tFAIL test/statistics.test.js > average > return value > passing [-2, 5, 1, 1, 5, 5, 2, -2, 2, -2] should return 1.5AssertionError: expected undefined to be 1.5 // Object.is equality<OUTPUT OMITTED FOR CLARITY!>FAIL test/statistics.test.js > maximum > argument > exceptions > passing anything but an array should throw TypeError with the custom message 'The passed argument is not an array.'AssertionError: expected function to throw an error, but it didn'tTest Files 1 failed (1)Tests 10 failed | 60 skipped (70)Start at 10:15:00Duration 1.2s -
För att köra testerna som har med average att göra kör skriptet
test:onlyoch skicka med"average"som ett argument.npm run test:only "average"Enbart de tester vars namnkedja innehåller average kommer att köras — resten räknas som skippade.
> assignment-a2@1.2.0 test:only> vitest run -t averageRUN v4.1.7 /home/en999zz/kurser/1dv025/examination/assignment-a2❯ test/statistics.test.js (35 tests | 5 failed | 30 skipped) 22ms× passing anything but an array should throw TypeError with the custom message 'The passed argument is not an array.' 3ms× passing an empty array should throw Error with the custom message 'The passed array contains no elements.' 1ms× passing [-2, 5, 1, 1, 5, 5, 2, -2, 2, -2] should return 1.5 0ms⎯⎯⎯⎯⎯⎯⎯ Failed Tests 5 ⎯⎯⎯⎯⎯⎯⎯FAIL test/statistics.test.js > average > argument > exceptions > passing anything but an array should throw TypeError with the custom message 'The passed argument is not an array.'AssertionError: expected function to throw an error, but it didn't<OUTPUT OMITTED FOR CLARITY!>Test Files 1 failed (1)Tests 5 failed | 30 skipped (35)Start at 10:16:12Duration 0.9s -
Vill du istället köra testerna som återfinns under namnet maximum, och hoppa över alla andra, kör du skriptet
test:onlyoch skicka med"maximum"som ett argument.npm run test:only "maximum"