Как получить статус входа в систему при входе в систему с помощью jasmine? - PullRequest
0 голосов
/ 26 апреля 2018

Это моя функция входа в систему:

  login(){
 let response =  this.api.apiPost('auth/login', this.userData)
.then(data => {
  console.log(data);
  let parsed = JSON.parse(data.toString());
  console.log(parsed);
  if(parsed.status == 1){
    this.token = parsed.token;
    this.api.setToken(parsed.token);
    let input = {"term": ""};
    input.term = this.userData.username;
    this.retrieveUserInfo();
    this.navCtrl.push(HomePage,{token:this.api.getToken(),appName:this.appName,quotes:this.quotes,picsURL:this.picsURL,uID:this.userData.username,test:this.params.test,code:this.params.code });
    var status = true;
    return status;
  } else if (parsed.status == 0){
    var status = false;
    return status;
  } else {}
});

}

it('test login', () => {
 var status = component.login();
 expect(status).toBe(true);
});

Проблема в том, что наличие оператора return внутри блока then в функции входа в систему не возвращает изфункция входа.Сама функция входа в систему ничего не возвращает (но возвращает значение true или false в переменную 'response'), поэтому модульный тест завершается неудачно, так как ожидается, что undefined верен.

У меня нет большого опыта работы слибо машинопись или жасмин.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 26 апреля 2018

Просто вызовите .then для вашего метода в тесте:

it('test login', (done) => {
  component.login().then((result) => {
    expect(result).toBe(true);
    done();
  });
});

Также не забудьте включить done

...