#angular #unit-testing #asynchronous #jasmine
#angular #модульное тестирование #асинхронный #jasmine
Вопрос:
У меня есть компонентный метод, подобный этому :
component {
let a = 1;
parentFunc(){
const res = fromEvent(reader,'loadend').pipe()
.subscribe(()=>{
this.a =5;
});
}
}
Код внутри него тестового примера :
it("test spec", function() {
component.parentFunc();
expect(component.a).toBe(5);
});
Я пишу модульный тест для этого, и когда я вызываю parentFunc, он выводит обновленное значение в консоль.
Но когда я пытаюсь получить к нему доступ, модульный тест похож на компонент.a Он всегда возвращает старое значение.
Каков наилучший способ проверить это значение?
Комментарии:
1. Можете ли вы поделиться кодом, касающимся модульного теста
2. @uiTeam324 проверьте сейчас, полезно ли это
Ответ №1:
Проблема в том, что a не является свойством компонента A. Таким образом, когда вы обновляете значение a, вы всегда получаете старое значение.
Вам следует попробовать выполнить следующее,
component A {
a = 1;
parentFunc(){
fromEvent(reader,'loadend').pipe()
.subscribe(()=>{
this.a =5;
});
}
}
Теперь, если вы проверите, component.a
у него должно быть 5
значение.
Комментарии:
1. Эй, извините, но в имени переменной была опечатка. Можете ли вы проверить обновленный вопрос и посмотреть, в чем проблема?
Ответ №2:
it('test spec', () => {
spyOn(component, 'fromEvent').and.returnValue(of({}));
component.parentFunc();
expect(component.a).toEqual(5);
});
Также используйте this.a =5;
внутри вашей функции.
Комментарии:
1. parentFunc не возвращает Observable . Что происходит, когда обновляется несколько переменных, поскольку вы предположили, что значение содержит обновленное значение
2. Обновил мой ответ, проверьте