Я использую Jasmine 2.9, и у меня нет проблем с шпионажем функции, будь то публичной или частной, но у меня возникают трудности с попыткой шпионить за get
или set
функцией на уровне класса.
private class RandomService {
public dogsHealth = 0;
private get personsFullName(): string {
return firstName + lastname;
}
private set personsLocation(address: string, city: string, country: string): string {
return address + city + country;
}
public get dogsFullName(): string {
return dogFirstName + dogLastName;
}
public get isDogAlive(): boolean {
return dogsHealth <= 0 ? true : false;
}
}
Решения, которые я пробовал:
spyOnProperty(RandomService, 'dogsFullName', 'get').and.returnValue(true);
spyOnProperty(RandomService, 'dogsFullName').and.returnValue(true);
spyOn(RandomService, 'dogsFullName').and.returnValue(true);
spyOnProperty(RandomService.dogsFullName, 'dogsFullName', 'get').and.returnValue(true);
В настоящее время я не нашел решения этой проблемы в Интернете, но продолжу поиск.Я знаю, что функции get или set создают переменную, поэтому я подумал, что, возможно, решение 4 сработало бы, но все еще нет.
Обновление
(Код выше также обновлен).
Попытка обновления вернуть строку и использование следующего жасмина дают мне ошибку:
spyOnProperty(RandomService, 'dogsFullName', 'get').and.returnValue('Frank');
Expected a spy, but got 'Frank'
А также для функции isDogAlive
я получаю следующее:
<toHaveBeenCalled> : Expected a spy, but got true.
Я понимаю, что это дает мне правильное значение, но если я spyOn
, то не должен ли он быть шпионом?