【发布时间】:2022-01-26 09:00:17
【问题描述】:
我有一个我要在这里展示的大函数,它非常简单,但不知何故我找不到如何对其进行单元测试。
我不需要确切的单元测试,只是 ifs 的一般方法,即使 ifs 因为我真的很挣扎。
此外,当我在我的 ts 中调用该函数时(我正在使用 Angular.js)
这一行:this.nominativo = this.praticaDetail.operazioneDomiciliazioneDto.utente 是覆盖返回的在线行,我不知道为什么它与下面这样的this.variazione = this.praticaDetail.operazioneDomiciliazioneDto.dataOperazione; 相同。
updateIstanza() {
this.nominativo = this.praticaDetail.operazioneDomiciliazioneDto.utente
this.variazione = this.praticaDetail.operazioneDomiciliazioneDto.dataOperazione;
this._bc.set('@pratica', 'Pratica ' + this.praticaDetail.numeroIstanza);
this.accordions.splice(4, 1);
this.richiesta();
if (
this.praticaDetail.funzioniDto.urlRicevuta != ''
) {
this.showRicevuta = true;
}
if(this.praticaDetail.statoDomiciliazioneDto.statoDomiciliazione == 4 ||
this.praticaDetail.statoDomiciliazioneDto.statoDomiciliazione == 5 ||
this.praticaDetail.statoDomiciliazioneDto.statoDomiciliazione == 9) {
this.buttonDownload = true;
}
if(this.praticaDetail.statoDomiciliazioneDto.statoDomiciliazione == 4){
this.buttonRevoca = true;
}
if (this.praticaDetail.statoDomiciliazioneDto.descrizione == STATI.ANNULLATA) {
this.disabledStato = true;
this.objectAlert = {
title: 'Istanza annullata',
text: this.praticaDetail.operazioneDomiciliazioneDto.noteOperazione
}
this.visualizzaAlert = true;
}else if(this.praticaDetail.statoDomiciliazioneDto.descrizione == STATI.DA_DEFINIRE){
this.notShow = true;
if(this.showRicevuta){
this.buttonDownload = true;
}
}else if(this.praticaDetail.statoDomiciliazioneDto.descrizione == STATI.IN_COMPILAZIONE){
this.annullaButton = true;
}else if(this.praticaDetail.statoDomiciliazioneDto.descrizione == STATI.SOSPESA) {
this.showDefinizioneSospInteg = true;
this.praticaSospesa = true;
}else if(this.praticaDetail.statoDomiciliazioneDto.descrizione == STATI.ATTESA_SOTTOSCRIZIONE) {
this.showSottoscrizione = true;
this.objectAlert = {
title: 'Attesa Sottoscrizione',
text: "L'integrazione è stata inserita con successo: a breve verrà generata una ricevuta che completerà il processo d'integrazione"
}
}else if(this.praticaDetail.statoDomiciliazioneDto.descrizione == STATI.IN_DEFINIZIONE) {
this.showDefinizione = true;
this.disabledStato = true;
}else if(this.praticaDetail.statoDomiciliazioneDto.descrizione == STATI.ACCETTATA) {
this.notShow = true;
this.notShowStato = true;
this.objectAlert = {
title: 'Domiciliazione Bancaria accettata',
text: ''}
if(this.showRicevuta) {
this.buttonDownload = true;
}
}else if (
this.praticaDetail.statoDomiciliazioneDto.descrizione == STATI.IN_REVOCA) {
if(this.praticaDetail.inAttesa){
this.disabledStato = true;
this.objectAlert = {
title: 'Attesa Sottoscrizione',
text: "La richiesta di revoca è stata inserita con successo: a breve verrà completato il processo di sottoscrizione"
}
} else {
this.showAsInRevocafunction();
this.showAnnullata = true;
this.accordionComponent?.openAccordion(
this.accordionComponent.CONSTANTS.ID_ACCORDIONS.DOCUMENTI
);
this.sottoscrizioneCompletata = true;
}
}else if (this.praticaDetail.statoDomiciliazioneDto.descrizione == STATI.DA_REVOCARE) {
this.showDefinizione = true;
this.disabledStato = true;
this.notShowStato = true;
if(this.praticaDetail.inAttesa){
this.objectAlert = {
title: 'Attesa Istituto Bancario',
text: "L'istanza si trova in attesa dell'esito da parte dell'istituto bancario"
}
this.visualizzaAlert = true;
this.showSottoscrizione = true;
}
}
}
}
if (this.dettaglio) {
this.accordions = [
new AccordionAssociazioneVeicolo(),
new AccordionDatiRichiedente(),
new AccordionDatiRichiesta(),
new AccordionDocumenti(),
];
this.notShowStato = true;
this.showRettifica = false;
this.inRettifica = false;
}
this.eventsSubject.next({
istanza: this.praticaDetail,
disabledStato: this.disabledStato,
});
} ```
【问题讨论】:
-
基于 wlf 的回答,我建议查看 Robert "Uncle Bob" Martin、Kent Beck 和 Martin Fowler。他们在将代码重构为更小的函数方面拥有丰富的资源,因此可以更轻松地进行单元测试。
标签: javascript angular typescript unit-testing if-statement