Příručka:Testování jednotek JavaScriptu

This page is a translated version of the page Manual:JavaScript unit testing and the translation is 100% complete.
Testovací sada QUnit od MediaWiki.

MediaWiki používá QUnit k unit test své báze kódu JavaScript.

Spuštění z prohlížeče

  1. Nastavte $wgEnableJavaScriptTest na true.
    Toto je již nastaveno ve většině vývojářských prostředí, jako je Quickstart nebo MediaWiki-Docker .
  2. Navštivte Special:JavaScriptTest v prohlížeči a spusťte testy.

Spuštění z příkazového řádku

Jednorázové nastavení

  • Nastavte proměnné prostředí MW_SERVER a MW_SCRIPT_PATH na adresu URL vaší místní wiki. Můžete je také vložit do souboru .bash_profile ve svém domovském adresáři a automaticky nastavit proměnné zatížení na nových kartách Terminál.
    # MediaWiki-Docker
    export MW_SERVER=http://localhost:8080
    export MW_SCRIPT_PATH=/w
    
    # composer serve
    export MW_SERVER=http://localhost:4000
    export MW_SCRIPT_PATH=/
    
  • Přejděte do hlavního adresáře MediaWiki a spusťte npm ci.

Spuštění

Toto spouští testy QUnit v Headless Chrome:

$ npm run qunit

Running "karma:main" (karma) task
 INFO [launcher]: Starting browser ChromeHeadless

 mediawiki.util
     ✔ escapeRegExp
     ✔ debounce


 Finished in 5.42 secs

 SUMMARY:
 ✔ 440 tests completed

Pomocí volby --qunit-component můžete spustit testy QUnit pro konkrétní komponenty. Předejte název rozšíření nebo vzhledu nebo MediaWiki na základní testy MediaWiki.

$ node_modules/grunt/bin/grunt qunit --qunit-component=GrowthExperiments

Running "karma:main" (karma) task

INFO [launcher]: Starting browser ChromeHeadless

  testrunner
    ✔ Loader status
    ✔ assert.htmlEqual
  ext.growthExperiments.Utils.js
    ✔ serializeActionData
    ✔ isUserInVariant
  ext.growthExperiments.Help/HelpPanelProcessDialog.js
    ✔ getDefaultPanelForSuggestedEditSession for copyedit
    ✔ updateEditMode for link-recommendation
    ✔ updateEditMode for copyedit, isEditing
  ext.growthExperiments.Homepage.SuggestedEdits/PagerWidget.js
    ✔ constructor
    ✔ setMessage with currentPosition < totalCount
    ✔ setMessage with currentPosition === totalCount
    ✔ setMessage with currentPosition > totalCount
  ext.growthExperiments.NewcomerTaskLogger.js
    ✔ constructor
    ✔ should log impressions
    ✔ should get log metadata
  ext.growthExperiments.StructuredTask/addimage/AddImageUtils.js
    ✔ getRenderData: target width < original width
    ✔ getRenderData: the image file needs to be re-rasterized
    ✔ getRenderData: vector image
    ✔ getRenderData: target width > original width
    ✔ getRenderData: 3x target width
    ✔ getRenderData: 2.5x target width
    ✔ getRenderData: vertical image with landscape viewport
    ✔ getRenderData: with specified render width

Finished in 0.03 secs

SUMMARY:
✔ 46 tests completed

Argument --qunit-watch pro QUnit můžete použít ke sledování souborů přidružených ke komponentě a automaticky znovu spustit testy, pokud se tyto soubory změní.

Bezpečnostní hledisko

Zvažte použití Fresh, nebo pokud již máte jiné izolované prostředí, zajistěte instalaci srovnatelné verze Node.js a npm (doporučuje se předposlední Node.js LTS). Proč?

  • Chcete-li vstoupit do izolovaného prostředí, spusťte fresh-node -net -env z hlavního adresáře MediaWiki. (Fresh automaticky najde proměnné MW_SERVER a MW_SCRIPT_PATH ze souboru .env MediaWiki-Docker.)
  • Jakmile jste uvnitř svého izolovaného shellu, spusťte npm ci pro instalaci nebo aktualizaci všech závislostí.
  • Chcete-li spustit testy, spusťte npm run qunit.

Jak se zapojit?

Spuštění testu před potvrzením

Zvykněte si spouštět testy jednotek před potvrzením a odesláním změn do Gerrit .

Psaní testů jednotek

Napište testy jednotek pro nové funkce a zvažte zaplnění mezer v pokrytí při změně stávajících modulů v jádru MediaWiki.

Psaní testu

Je obvyklé pojmenovat soubor testovací sady podle modulu, který pokrývá. Například mediawiki.user.test.js pokrývá modul mediawiki.user.

Uvnitř testovací sady by mělo být volání na QUnit.module s názvem modulu.

Testy jednotek pro jádro MediaWiki jsou umístěny v adresáři tests/qunit/resources/.

Zaregistrování testu

Jádro MediaWiki

Testovací sady se přidávají k registraci modulu test.MediaWiki v /tests/qunit/QUnitTestResources.php.

Testy jsou organizovány do adresářové struktury, která odpovídá adresářové struktuře testovaného kódu. Například: Unit test na resources/mediawiki.base/util.js lze nalézt na tests/qunit/resources/mediawiki.util/util.test.js.

Příklad:

 'mediawiki.tests.qunit.suites' => array(
 	'scripts' => array(
 		'tests/qunit/resources/mediawiki.base/html.test.js',
 		'tests/qunit/resources/mediawiki.util/util.test.js',
+		'tests/qunit/resources/mediawiki.example/example.test.js',
 	),
 	'dependencies' => array(
 		'mediawiki.util',
+		'mediawiki.example',

Rozšíření

Rozšíření registrují své testy QUnit prostřednictvím atributu QUnitTestModule v extension.json.

Související odkazy