Макет метода Jasmine setter не работает

component.ts

fillformdata(): void {
    if (this.mark === false) {
      var jsoncontent = {
        ipaddr: (this.noip == false) ? this.ipinput : this.ipadd,
        host: (this.noip == false) ? this.hostinput : this.host,
        username: this.usernamevalue,
        password: this.passwordvalue
      };
      this.deployt.setuserinputs(jsoncontent);
    } else {

    }
  }

В приведенном выше методе я пытаюсь установить данные формы в setuserinputs, который является файлом n depoyClass.

component.spec.ts

it('should call fillformdata', () => {
    var jsoncontent = {
      ipadd:"127.0.0.1",
      host:"host1",
      username:"admin",
      password:"admin"
    };
    let response = component.fillformdata(); 
    const deploy =  new deploymentdetails();
    const spiez = spyOnProperty(deploy, 'setuserinputs', 'set');
    deployinput.userinputs = [jsoncontent];
    expect(spiez).toHaveBeenCalled();
    expect(response).not.toBeNull();
  });

Когда я выполняю ng test, происходит сбой. Показ ниже ошибки

Error: <spyOnProperty> : Property setuserinputs does not have access type set
        Usage: spyOnProperty(<object>, <propName>, [accessType])
            at <Jasmine>

Я следил за ссылкой ниже стека (второй ответ) Как мне шпионить за геттерами Typescript и сеттеры?


person arj    schedule 14.12.2020    source источник
comment
Можете ли вы предоставить здесь свои файлы ts и spec.ts, в которых будет легко найти решение.   -  person Arunkumar Ramasamy    schedule 14.12.2020
comment
Что такое this.deployt? Пожалуйста, предоставьте код.   -  person slideshowp2    schedule 14.12.2020


Ответы (1)


Похоже, вы хотите вместо этого шпионить за переменной развертывания компонента.

it('should call fillformdata', () => {
    var jsoncontent = { ... };
    let response = component.fillformdata(); 

    // Spy on component.deployt
    const spiez = spyOn(component.deployt, 'setuserinputs');

    deployinput.userinputs = [jsoncontent];
    expect(spiez).toHaveBeenCalled();
    expect(response).not.toBeNull();
  });
person Passersby    schedule 14.12.2020