Не определено в .join () для углового модульного теста - PullRequest
0 голосов
/ 20 октября 2019

Я тестирую функцию (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 кажется, что в моей функции есть проблема.

Может кто-нибудь помочь мне, пожалуйста, я застрял в этой проблеме. Заранее спасибо.

...