
MediaWiki používáQUnit kunit test své báze kóduJavaScript.
$wgEnableJavaScriptTest natrue.MW_SERVER aMW_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-DockerexportMW_SERVER=http://localhost:8080exportMW_SCRIPT_PATH=/w
# composer serveexportMW_SERVER=http://localhost:4000exportMW_SCRIPT_PATH=/
npm ci.Toto spouští testy QUnit v Headless Chrome:
$npmrunqunitRunning "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 neboMediaWiki na základní testy MediaWiki.
$node_modules/grunt/bin/gruntqunit--qunit-component=GrowthExperimentsRunning "karma:main" (karma) taskINFO [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 widthFinished in 0.03 secsSUMMARY:✔ 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í.
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č?
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.)npm ci pro instalaci nebo aktualizaci všech závislostí.npm run qunit.Zvykněte si spouštět testy jednotek před potvrzením a odesláním změn doGerrit.
Napište testy jednotek pro nové funkce a zvažte zaplnění mezer v pokrytí při změně stávajícíchmodulů v jádru MediaWiki.
Je obvyklé pojmenovat soubor testovací sady podle modulu, který pokrývá.Napříkladmediawiki.user.test.js pokrývá modulmediawiki.user.
Uvnitř testovací sady by mělo být volání naQUnit.module s názvem modulu.
Testy jednotek pro jádro MediaWiki jsou umístěny v adresářitests/qunit/resources/.
Testovací sady se přidávají k registraci modulutest.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 naresources/mediawiki.base/util.js lze nalézt natests/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í registrují své testy QUnit prostřednictvím atributuQUnitTestModule vextension.json.