У меня есть компонент, я объявил одно из его свойств как groupForm : FormGroup
. В одном из методов я получаю значение поля формы и присваиваю его постоянной:
const value = this.groupForm.get('field').value;
Позже я использую эту константу, чтобы проверить одно условие и сделать что-то вроде:
if (value.$type === 'Variable') {
// do something
}
В файле компонента .spe c .ts я пишу пример модульного теста с использованием Jasmin и Karma, я пытаюсь смоделировать это как:
let groupFormMock = spyOn(component.groupForm, 'get')
groupFormMock.and.returnValues({
value: {
$type: "Variable",
name: "Variable",
variableType: "Text",
description: "Variable",
category: "Actions",
subCategory: "Variable",
initialValue: "Test",
sortOrder: 0
}
})
Но я получаю эту ошибку:
Argument of type '{ value: { $type: string; name: string; variableType: string; description: string; category: string; subCategory: string; initialValue: string; sortOrder: number; }; }' is not assignable to parameter of type 'AbstractControl'.
Type '{ value: { $type: string; name: string; variableType: string; description: string; category: string; subCategory: string; initialValue: string; sortOrder: number; }; }' is missing the following properties from type 'AbstractControl': validator, asyncValidator, _parent, _asyncValidationSubscription, and 43 more.
Итак, я подумал, что утешение значения JSON.stringify(this.groupForm.get('variableName'))
и возвращение его как фиктивного объекта решит проблему, но это дало мне еще одну ошибку:
An error occurred: Converting circular structure to JSON
--> starting at object with constructor 'Subscriber'
| property '_subscriptions' -> object with constructor 'Array'
| index 0 -> object with constructor 'SubjectSubscription'
--- property '_parentOrParents' closes the circle
Объект, возвращаемый методом get
, является круглым объектом (ссылающимся на себя), который не может быть утешен. Итак, мне нужно создать фиктивный объект AbstractControl, чтобы я мог использовать это и вернуть его в методе фиктивного. Или любые решения для решения этой проблемы приветствуются.
Я застрял, любые выводы будут полезны.
PS: Мне нужно сделать это без использования TestBeds.