Testfälle für ein WordPress Plugin mit Übersetzungen schreiben

Was ist mein Ziel?

Ich freue mich darauf, Testfälle für die verfügbaren Übersetzungen eines WordPress-Plugins zu schreiben.

Mein Ansatz:

Ich habe WordPress mit VVV eingerichtet und meine Testsuite beinhaltet PHPUnit und WP-CLI .

Um die Übersetzungen zu testen (zu bestätigen), überprüfe ich, ob die .mo Datei der Sprache existiert oder nicht.

 /** * Test the translations. */ public function test_translations() { $this->assertFileExists( $this->object->path . 'lang/domain-name-de_DE.mo' ); $this->assertFileExists( $this->object->path . 'lang/domain-name-lt_LT.mo' ); $this->assertFileExists( $this->object->path . 'lang/domain-name-nl_NL.mo' ); } 

Wo stecke ich fest?

Ist das der richtige Ansatz, um translations für ein WordPress-Plugin zu testen? Wenn nicht, schlagen Sie bitte Alternativen vor.

Solutions Collecting From Web of "Testfälle für ein WordPress Plugin mit Übersetzungen schreiben"

Wenn alles, was Sie testen möchten, ist, dass die Übersetzungsdateien vorhanden sind, dann ist dies wahrscheinlich der einfachste Ansatz, da Sie PHPUnit wahrscheinlich bereits verwenden werden, um Unit- / Integrationstests für den Plugin-Code auszuführen.

Aber nur zu überprüfen, ob die Dateien existieren, sagt Ihnen nicht viel. Sie erfahren nicht, ob diese Sprachen tatsächlich vollständig übersetzt sind oder ob diese Dateien von WordPress korrekt geladen werden.

Die Frage, die Sie sich stellen müssen, lautet: “Warum teste ich das?” Wenn Sie nur sicherstellen möchten, dass Sie nicht versehentlich eine Übersetzungsdatei auslassen, sollten Ihre Tests das tun, was Sie brauchen. Wenn Sie wirklich sicherstellen möchten, dass Sie für jede Sprache vollständige Übersetzungen haben und dass diese tatsächlich funktionieren, ist das eine ganz andere Geschichte.

Testen des Übersetzungsladens

Um zu überprüfen, ob jede Übersetzungsdatei korrekt von WordPress geladen werden kann, könnten Sie wahrscheinlich einen PHPUnit-Test erstellen, der die Dateien mit load_plugin_textdomain() und überprüft, ob true wird. Dies würde bedeuten, dass die Textdomäne ordnungsgemäß geladen werden kann. Wahrscheinlich müssen Sie sich in den plugin_locale Filter plugin_locale , um jedes Gebietsschema zu prüfen, das mit Ihrem Plugin ausgeliefert wird.

Vollständigkeit prüfen

Allerdings würde Ihnen das immer noch nicht sagen, wie viele Strings tatsächlich in diese Sprache übersetzt wurden, wie viele unscharf sind usw. Wenn Sie überprüfen möchten, ob jede Übersetzung mindestens zu xx% fertig ist, werden Sie wahrscheinlich verwenden wollen ein anderes Tool als PHPUnit.

Aussehen testen

Sie könnten auch weiter gehen und überprüfen, ob die Strings in jeder Übersetzung tatsächlich korrekt in der Plugin-Benutzeroberfläche angezeigt werden. Manchmal kann eine Zeichenfolge in einer Übersetzung viel länger sein als in der Originalsprache, und dies kann dazu führen, dass sie den zugewiesenen Bereich überläuft. Um dies zu überprüfen, müssen Sie Codeception- Akzeptanztests verwenden.

Fazit

Also, abschließend, ob die Tests, die Sie haben, der richtige Ansatz für Sie sind, hängt davon ab, was Sie testen möchten. Ich persönlich habe keine Tests für die Übersetzungen meiner Plugins, obwohl mich der letzte Teil der Überprüfung der Benutzeroberfläche fasziniert hat. Wenn ich nur überprüfe, dass die Übersetzungen existieren, so wie Sie es jetzt tun, scheint mir das keinen großen Nutzen zu bringen. Es ist eine Prüfung, die nur so gut ist wie Ihre Liste von Übersetzungsdateien, nach denen Sie suchen. Und in einem Sinne prüft es eigentlich nichts, sondern stellt nur sicher, dass es da ist. Dies könnte in einem Build-Skript statt PHPUnit durchgeführt werden. Überprüfen, dass die Übersetzungen tatsächlich von WordPress geladen werden können, bietet IMO Vorteile, weil es tatsächlich testet, dass sie nicht beschädigt sind. Und natürlich testet es, dass sie gleichzeitig existieren. Also würde ich wahrscheinlich Ihre Tests erweitern, um das auch zu überprüfen.

Bearbeiten

In diesem Zusammenhang sollten Sie auch prüfen, ob in Ihrem Haupt-POT Rechtschreiberrors auftreten (und vermutlich auch in Übersetzungen). Für sie ist es einfach, unter das Radar zu schlüpfen. Wahrscheinlich gibt es Shell-Skripte, die dies tun können.