ためPHPUnitのテストでカスタム名前空間を作成し、私はトラブルカスタム名前空間を作成したのです:MediaWikiの拡張のためのPHPUnitテストではMediaWikiの拡張
class NameSpaceTestCase extends \MediaWikiTestCase {
public function testCustomNameSpace() {
$ns = 4000;
$this->setMwGlobals([
"wgExtraNamespaces[$ns]" => 'custom_namespace'
]);
// global $wgExtraNamespaces;
// $wgExtraNamespaces[$ns] = 'custom_namespace';
$this->insertPage('in custom namespace', 'This is a page in a custom namespace', $ns);
$this->assertTrue(MWNamespace::exists($ns), "The name space with id $ns should exist!");
}
}
名前空間は(コードの最後の行に)存在することを主張します失敗する。
現在コメントされている行のコメントを外して(代わりにsetMwGlobals
への呼び出しにコメントする)、それでも失敗します。
MediaWikiで名前空間をプログラムで作成するにはどうすればよいですか?
を追加するような何かを行うことができます変数名の末尾に '[...]'を付けても何も役に立ちません。おそらく '$ this-> mergeMwGlobalArrayValue( 'wgExtraNamespaces'、[$ ns => 'custom_namespace'])' – Tgr
が必要になるでしょう。テストが実行されるまでに名前空間がキャッシュされている可能性があります。 'MWNamespace :: getCanonicalNamespaces(true)'を呼び出してキャッシュを再構築することができます。 – Tgr
ありがとう@Tgr、それは解決策です: 'mergeMwGlobalArrayValue'の後ろに' MWNamespace :: getCanonicalNamespaces(true) 'を続けてください。これを回答として追加しますか?それから、私はそれを解決済みとしてマークすることができます。 – bovender