Я тестирую функцию (getStyledString (param1, param2)), которая принимает параметр с оператором if-else внутри него и присоединяет строку массива. Когда я запускаю тест, он показывает, что тест не пройден, потому что массив, к которому я присоединяюсь, не определен. Мои другие тесты были пройдены, но если функция may имеет .join (), результат не удался.
Я пытался не использовать .join (), если в массиве только один элемент. Но возникла еще одна проблема, которая говорит о том, что я не могу вставить неопределенный объект в массив.
export class someComponent {
@Input() objectFromOtherComponent;
collectionOfStyledObject : Array<ISomeInterface>;
arrayToBeUsedForNGFor : Array<ISomeInterface>;
functionToBeCalledOnInit(objectFromOtherComponent){
for(let i = 0; i<objectFromOtherComponent.length; i++ )
if(i == 1){
this.getStyledString(objectFromOtherComponent[i], i);
} else if(i == 2){
this.nextfunction2(objectFromOtherComponent[i], i);
}
}
getStyledString(object : ISomeInterface, index: number) {
let newArray : Array<string> = [];
let mismatchNode = object.mismatchnode
let styledNode1 = '<span class="some-class">' + object.content.slice(mismatchNode).join('/') + '</span>'
let styledNode2 = '<span class="some-class">' + object.content.slice(mismatchNode).join('- ') + '</span>'
newArray.push(object.content.slice(0, mismatchNode));
if(object.label == "label1"){
newArray.push(styledNode1);
object.content = newArray.join(' / ');
} else {
newArray.push(styledNode2);
object.content = newArray.join(' - ');
}
arrayToBeUsedForNGFor.push(object);
}
}
Interface
export interface ISomeInterface {
label: string;
matchIndicator: string;
content: any; //can be array or string
mismatchnode: number;
}
beforeEach (() => {
let component = new someComponent();
let dataInput = someDummyData;
});
it('Expect that arrayToBeUsedForNGFor array has a length of 1 when it enters the function getStyledString',() =>{
component.objectFromOtherComponent = dataInput;
component.getStyledString(component.objectFromOtherComponent[1], 1);
expect(component.arrayToBeUsedForNGFor.length).toEqual(1);
});
Ожидаемый результат - этот тест должен пройти. Но, к сожалению, этот тест не пройден, поскольку в .join () не определено. В моем пользовательском интерфейсе я вижу ожидаемый результат, но при выполнении теста ng кажется, что в моей функции есть проблема.
Может кто-нибудь помочь мне, пожалуйста, я застрял в этой проблеме. Заранее спасибо.