Я пытаюсь выполнить модульное тестирование своего пользовательского элемента aurelia, который выглядит следующим образом.
// BaseText.ts
import { bindable } from "aurelia-framework";
import { BaseI18N } from "aurelia-i18n";
export class BaseText extends BaseI18N {
@bindable public value: string;
@bindable public i18nKey: string;
}
// NormalText.ts
export class NormalTextCustomElement extends BaseText {}
// NormalText.html
<template>
<span t.bind="i18nKey">${value}</span>
</template>
Теперь я хочу проверить, изменил ли я значение i18nKey
, переведенный текст отображается вэлемент.Чтобы проверить это, я написал следующий контрольный пример.
describe("i18n specs", () => {
let component;
beforeEach(() => {
component = StageComponent
.withResources("NormalText/NormalText")
.inView("<normal-text id='i18n1' value='Ignored Text' i18n-key='test'></normal-text>");
component.bootstrap((aurelia: Aurelia) => aurelia.use
.standardConfiguration()
.plugin(PLATFORM.moduleName("aurelia-i18n"), (instance) => {
const aliases = ["t"];
TCustomAttribute.configureAliases(aliases);
return instance.setup({
attributes: aliases,
fallbackLng: "en",
lng: "en",
resources: { //<-- translation resources
en: {
translation: {
test: "English test"
}
}
}
});
}));
});
it("Should render the translated text with a i18nKey", (done) => {
component
.create(bootstrap)
.then(() => {
const spanElement = document.querySelector('normal-text#i18n1>span');
expect(spanElement.textContent.trim()).toBe('English test');
})
.catch(e => { console.log(e.toString()) })
.finally(() => {
component.dispose();
done();
});
});
});
Теперь проблема в том, что этот контрольный пример прерывается с перерывами, что, несомненно, будет проблемой для CI.Я подозреваю, что он что-то делает для инициализации i18next, и тестовый пример выполняется до завершения инициализации.Хотя я не очень уверен в этой гипотезе.
Что я должен изменить, чтобы этот тестовый пример стал детерминированным?
Дополнительная информация:
- Этот тестовый пример успешен, если он выполняется перед каждым другим просмотром связанных тестовых примеров .
- Я создал GitHub repo , чтобы заинтересованный читатель / пользователь мог воспроизвести проблему.Помните, что вы могли запускать тесты несколько раз, чтобы повторить проблему.