Итак, я пытаюсь написать тесты кармы для множества компонентов, и многие из них получают данные от родительского компонента.Чтобы попытаться проиллюстрировать, как работают тесты, я создал пример группы из 5 различных файлов в виде своего рода учебника: "random.test.component.child.html", "random.test.component.child.ts", "random.test.component.html "," random.test.component.ts "и" random.test.file.spec.ts ".
Я хочу получить входные данные от одного компонента и установить значениек переменной другого ([variable] = "value").Я уже пытался получить доступ к переменной, которая должна быть установлена напрямую через ввод HTML-файла, но безрезультатно.
Вот соответствующие части файлов:
random.test.component.child.html (variableThatStoresTheDataThatTheChildReceives отображается как пустое, если не задано вручную)
<h2>Also, here's a thing that should load properly: {{variableThatStoresTheDataThatTheChildReceives}}</h2>
random.test.component.child.ts
@Input() variableThatStoresTheDataThatTheChildReceives: any;
random.test.component.html
<!-- The parents pass data to the children. -->
<random-test-child [variableThatStoresTheDataThatTheChildReceives]="dataFromTheParentToTheChild"></random-test-child>
random.test.component.ts
public dataFromTheParentToTheChild:any = "This is a test.";
random.test.file.spec.ts (внутри оператора описания)
it('Testing if receiving input from one component to another works properly', () => {
childFixture.whenStable().then(() => {
childFixture.detectChanges();
expect(childComponent.variableThatStoresTheDataThatTheChildReceives).toEqual("This is a test.");
});
});
Я бы ожидалполучить входные данные, полученные от компонента HTML, в результате childComponent.variableThatStoresTheDataThatTheChildReceives будет иметь значение «Это тест», но вместо этого я получаю «undefined».Я знаю, что вы можете установить ввод вручную следующим образом:
childComponent.variableThatWillHaveTheInputHardCodedKindOf = 'Manual Text';
, но я пытаюсь запустить тест, используя данные, которые передаются компоненту, когда он не тестируется.
Есть ли способ сделать это?