Viết các trường hợp thử nghiệm cho một Plugin WordPress có bản dịch


7

Mục tiêu của tôi là gì?

Tôi đang mong đợi để viết các trường hợp thử nghiệm cho các bản dịch có sẵn của một plugin WordPress.

Cách tiếp cận của tôi:

Tôi đã thiết lập WordPress bằng VVV và bộ thử nghiệm của tôi bao gồm PHPUnitWP-CLI .

Để kiểm tra (khẳng định) các bản dịch, tôi đang kiểm tra xem .motập tin của ngôn ngữ có tồn tại hay không.

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

Tôi bị kẹt ở đâu?

Đây có phải là cách tiếp cận phù hợp để kiểm tra translationsplugin WordPress? Nếu không, xin vui lòng đề xuất lựa chọn thay thế.

Câu trả lời:


4

Nếu tất cả những gì bạn muốn kiểm tra là các tệp dịch tồn tại, thì đây có lẽ là cách tiếp cận đơn giản nhất, vì có lẽ bạn đã sử dụng PHPUnit để chạy thử nghiệm đơn vị / tích hợp trên mã plugin.

Tuy nhiên, chỉ cần kiểm tra xem các tập tin tồn tại không cho bạn biết nhiều. Nó không cho bạn biết liệu những ngôn ngữ đó có thực sự được dịch hoàn toàn hay không, ngay cả khi những tệp đó sẽ được WordPress tải đúng cách.

Vì vậy, câu hỏi bạn cần tự hỏi mình là "Tại sao tôi lại thử nghiệm điều này?" Nếu bạn chỉ muốn đảm bảo rằng bạn không vô tình để lại một tệp dịch, thì các bài kiểm tra của bạn sẽ làm những gì bạn cần. Nếu bạn muốn thực sự đảm bảo rằng bạn có bản dịch hoàn chỉnh cho từng ngôn ngữ và những ngôn ngữ này thực sự hoạt động, đó là một câu chuyện hoàn toàn khác.

Đang thử tải bản dịch

Để kiểm tra xem mỗi tệp dịch có thể được tải đúng cách bởi WordPress hay không, bạn có thể tạo một bài kiểm tra PHPUnit đã tải các tệp bằng cách sử dụng load_plugin_textdomain()và kiểm tra xem nó có trả về không true, điều đó cho thấy rằng tên miền văn bản có thể được tải đúng cách. Bạn có thể cần phải nối vào plugin_localebộ lọc để kiểm tra từng miền được gửi cùng với plugin của bạn.

Kiểm tra tính đầy đủ

Tuy nhiên, điều đó vẫn không cho bạn biết có bao nhiêu chuỗi thực sự được dịch sang ngôn ngữ đó, bao nhiêu chuỗi mờ, v.v. Nếu bạn muốn kiểm tra xem mỗi bản dịch đã hoàn thành ít nhất xx% chưa, bạn có thể muốn sử dụng một công cụ khác ngoài PHPUnit cho điều đó.

Kiểm tra ngoại hình

Bạn cũng có thể đi xa hơn và kiểm tra xem các chuỗi trong mỗi bản dịch có thực sự xuất hiện chính xác trong giao diện người dùng plugin không. Đôi khi, một chuỗi có thể dài hơn nhiều trong bản dịch so với ngôn ngữ gốc và điều này có thể khiến nó tràn qua khu vực được phân bổ cho nó. Để kiểm tra điều này, bạn cần sử dụng một cái gì đó như các bài kiểm tra chấp nhận Codecellect .

Phần kết luận

Vì vậy, kết luận, liệu các bài kiểm tra bạn có là phương pháp phù hợp với bạn hay không phụ thuộc vào những gì bạn muốn kiểm tra. Cá nhân, tôi không có bất kỳ thử nghiệm nào cho bản dịch của plugin, mặc dù phần cuối cùng về việc kiểm tra UI đã khiến tôi tò mò. Chỉ cần kiểm tra xem các bản dịch tồn tại, như bạn đang làm bây giờ, không xuất hiện với tôi để mang lại nhiều lợi ích. Đó là một kiểm tra chỉ tốt như danh sách các tệp dịch mà bạn đang kiểm tra. Và theo một nghĩa nào đó, nó không thực sự kiểm tra bất cứ điều gì, chỉ cần đảm bảo rằng nó ở đó. Điều đó có thể được thực hiện trong một tập lệnh xây dựng chứ không phải PHPUnit. Kiểm tra xem các bản dịch thực sự có thể được tải bởi WordPress khôngcung cấp IMO có lợi, vì nó thực sự kiểm tra rằng chúng không bị hỏng. Và tất nhiên, nó kiểm tra rằng chúng tồn tại cùng một lúc. Vì vậy, tôi có thể mở rộng các bài kiểm tra của bạn để kiểm tra điều đó quá.

Biên tập

Trên một lưu ý liên quan, tôi cũng có thể xem xét kiểm tra bất kỳ lỗi chính tả nào trong POT chính của bạn (và trong bản dịch cũng vậy, tôi đoán vậy). Thật dễ dàng để những thứ này trượt vào dưới radar. Có lẽ có các kịch bản shell có sẵn có thể làm điều này.


Cảm ơn đã giải thích chi tiết @jd Câu trả lời rất hữu ích.
Maria Daniel Deepak

Xin chào @JD trong trường hợp của tôi, tôi đã phải kiểm tra $plugin_rel_pathkhi tải tên miền văn bản plugin - load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) Vì vậy, tôi đã phải viết trường hợp thử nghiệm cho nó.
Maria Daniel Deepak

@MariaDanielDeepak Ý kiến ​​hay. Tôi đã cập nhật câu trả lời để đề xuất sử dụng load_plugin_textdomain()thay vì load_textdomain().
JD
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.