Написание тестовых примеров для плагина WordPress с переводами

Какова моя цель?

Я с нетерпением жду возможности написать тестовые примеры для доступных переводов плагина WordPress.

Мой подход:

У меня есть установка WordPress с помощью VVV , и мой набор тестов включает PHPUnit и WP-CLI .

Чтобы проверить (утвердить) переводы, я проверяю, существует ли файл языка .mo.

/**
 * 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' );
}

Где я застрял?

Это правильный подход для тестирования translations для плагина WordPress? Если нет, предложите альтернативы.

8 голосов | спросил Maria Daniel Deepak 8 J000000Friday16 2016, 12:47:12

1 ответ


5

Если все, что вы хотите проверить, это то, что файлы перевода существуют, то это, вероятно, самый простой подход, поскольку вы, вероятно, уже используете PHPUnit для запуска тестов unit /integration в коде плагина.

Однако, просто проверяя, существуют ли файлы, вам много не говорят. Он не говорит вам, действительно ли эти языки полностью переведены или даже если эти файлы будут правильно загружены WordPress.

Итак, вопрос, который вам нужно задать самому себе: «Почему я тестирую это?» Если вы просто хотите убедиться, что вы случайно не оставили файл перевода, ваши тесты должны делать то, что вам нужно. Если вы действительно хотите убедиться, что у вас есть полный перевод для каждого языка, и что они действительно работают, это совсем другая история.

Тестирование загрузки переводов

Чтобы проверить, может ли каждый файл перевода правильно загружаться WordPress, возможно, вы можете создать тест PHPUnit, который загружал файлы с помощью load_plugin_textdomain() и проверяя, что он возвращает true, что указывает на правильную загрузку текстового домена. Вам, вероятно, потребуется подключиться к plugin_locale , чтобы проверить каждую локаль, которая поставляется с вашим плагином.

Полнота тестирования

Однако это все равно не скажет вам, сколько строк было фактически переведено на этот язык, сколько нечетких и т. д. Если вы хотите проверить, что каждый перевод не превышает xx%, вы, вероятно, хотите использовать для этого инструмент, отличный от PHPUnit.

Внешний вид тестирования

Вы также можете пойти дальше и проверить, что строки в каждом переводе действительно отображаются правильно в интерфейсе плагина. Иногда строка может быть намного длиннее в переводе, чем на исходном языке, и это может привести к переполнению выделенной области. Чтобы проверить это, вам нужно будет использовать что-то вроде приемочных тестов кода.

Заключение

Итак, в заключение, правильно ли ваш выбор зависит от того, что вы хотите проверить. Лично у меня нет никаких тестов для переводов моих плагинов, хотя эта последняя часть о проверке пользовательского интерфейса меня заинтриговала. Просто проверяя, что переводы существуют, как вы сейчас это делаете, мне не кажется, что они приносят большую пользу. Это проверка, которая так же хороша, как и список файлов переводов, которые вы проверяете. И в некотором смысле это на самом деле не test , просто убедитесь, что оно есть. Это может быть выполнено в скрипте сборки, а не в PHPUnit. Проверяя, что переводы действительно могут быть загружены WordPress делает , предоставит пользу ИМО, потому что она фактически проверяет, что они не повреждены. И, конечно же, он проверяет, что они существуют одновременно. Поэтому я бы, вероятно, расширил ваши тесты, чтобы проверить это тоже.

Изменить

В соответствующей заметке вы также можете рассмотреть возможность тестирования любых орфографических ошибок в вашем основном POT (и, соответственно, в переводах). Легко для них проскользнуть под радаром. Вероятно, доступны сценарии оболочки, которые могут это сделать.

ответил J.D. 8 J000000Friday16 2016, 16:17:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132