Manual:JavaScript unit testing/cs

From Linux Web Expert

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
File:SpecialJavaScriptTest-MediaWiki-1.25.png
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