يبدو أنني أواجه حالة سباق في Qunit، في حالتي عند تشغيل:
rake "plugin:qunit[discourse-multilingual]" مع تثبيت فرع.
أنا أعلن عن دالة في المُهيئ الخاص بي (أنا أُوسع I18n )
الاختبارات أحيانًا (25٪؟) تبدو أنها تعمل قبل أن يعمل المُهيئ الخاص بالإضافات في Ember ويفشل لأن الدالة غير معرفة.
كيف أضمن أن المُهيئ الخاص بالإضافات قد تم تشغيله قبل بدء الاختبار؟
اختبار:
import { test } from "qunit";
import { tag_translations } from "../fixtures/tag-translations";
import I18n from "I18n";
acceptance("Translated tags", function () {
I18n.tag_translations = tag_translations;
test("translates included data correctly", async (assert) => {
I18n.locale = "fr";
assert.equal(I18n.default.currentLocale(), "fr");
assert.equal(I18n.translate_tag("motor-car"), "voiture");
});
test("translates included data correctly", async (assert) => {
I18n.locale = "en";
assert.equal(I18n.default.currentLocale(), "en");
assert.equal(I18n.translate_tag("motor-car"), "motor-car");
});
});
تعريف:
Composer.serializeOnCreate(
"content_language_tags",
"content_language_tags"
);
Composer.serializeToTopic(
"content_language_tags",
"topic.content_language_tags"
);
}
I18n.translate_tag = function (tag) {
if (
typeof I18n.tag_translations !== "undefined" &&
I18n.tag_translations !== null &&
typeof I18n.tag_translations[I18n.default.currentLocale()] !==
"undefined" &&
typeof I18n.tag_translations[I18n.default.currentLocale()][tag] !==
"undefined"
) {
return I18n.tag_translations[I18n.default.currentLocale()][tag];
} else {
خطأ متقطع:
TypeError: _I18n.default.translate_tag is not a function
حسنًا، لقد قمت بحل هذه المشكلة عن طريق إعادة الهيكلة. لقد نقلت وظيفتي خارج I18n ووضعتها في وحدة موجودة متعددة اللغات.
يبدو أن توسيع I18n هنا ليس موثوقًا به في جميع السيناريوهات، وبالتأكيد ليس في اختبارات الوحدة، على ما يبدو!
إعجاب واحد (1)