Я ставлю службу в моем компоненте Сейчас я хочу шпионить за всеми методами, а не вызывать их.
Я следовал угловому учебнику , который создает шпионский объект и затем определяет функцию возврата:
it('#getValue should return stubbed value from a spy', () => {
// create `getValue` spy on an object representing the ValueService
const valueServiceSpy =
jasmine.createSpyObj('ValueService', ['getValue']);
// set the value to return when the `getValue` spy is called.
const stubValue = 'stub value';
valueServiceSpy.getValue.and.returnValue(stubValue);
Вместо того, чтобы возвращать определенное значение, я хочу вызвать этот конкретный метод. Я также переместил шпиона в beforeEach, потому что я хочу использовать его в нескольких тестах. Причина, по которой я не хочу издеваться над созданием формы, заключается в том, что это будет копия 1: 1 оригинального метода.
Spec
describe('GeneratorComponent', () => {
let component: GeneratorComponent;
let fixture: ComponentFixture<GeneratorComponent>;
beforeEach(async(() => {
const hotkeysServiceSpy = jasmine.createSpyObj('HotkeysService', ['add']);
const generatorServiceSpy = jasmine.createSpyObj('GeneratorService', [
'createGeneratorForm',
'createRepository',
'crawlRepository',
'fillWithDummy'
]);
generatorServiceSpy.createGeneratorForm.and.callThrough();
...
beforeEach(() => {
fixture = TestBed.createComponent(GeneratorComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
Компонент
constructor(
private generatorService: GeneratorService,
...
) {
this.generatorForm = generatorService.createGeneratorForm();
this.generatorForm.valueChanges.debounceTime(500).subscribe( (changes) => {
...
});
Теперь я получаю TypeError: Cannot read property 'valueChanges' of undefined
.
Вопросы:
1) Как просто вызвать этот конкретный метод, который создает мою форму?
2) Требует ли этот вызов через меня импортировать / предоставить все зависимости службы (конструктора службы) или только зависимости этого конкретного метода?