Domanda

Sto scrittura di unit test per un modulo in una piccola applicazione Javascript. Al fine di mantenere l'interfaccia pulita, alcuni dei dettagli di implementazione sono chiusi, ad opera di funzione anonima (il solito modello JS per la privacy). Tuttavia, durante il test ho bisogno di accesso / finto / verificare le parti intime.

La maggior parte dei test che ho scritto in precedenza sono stati in Python, dove non ci sono vere e proprie variabili private (membri, identificatori, come volete chiamarli). Una suggerisce semplicemente la privacy attraverso una sottolineatura importante per gli utenti, e liberamente lo ignora durante il test del codice. In linguaggi OO staticamente tipizzati Suppongo che si potrebbe fare soci privati ??accessibili a prove convertendo loro di essere protetti e sottoclasse l'oggetto da testare. In Javascript, quest'ultimo non si applica, mentre la prima sembra come una cattiva pratica.

ho potuto sempre ripiegare al test della scatola nera e semplicemente controllare i risultati finali. E 'l'approccio più semplice e pulito, ma purtroppo non era molto dettagliato abbastanza per le mie esigenze.

Quindi, c'è un modo standard di mantenere le variabili, mentre privata mantenendo alcune backdoor per testare in Javascript?

È stato utile?

Soluzione

No. Non credo che ci sia. Si riduce in sostanza riduce a se si prende l'approccio di chiusura e perda il test white box o fare test white box e decorazione nome uso per i soci "privati". In realtà non solo in Python, ma in javascript troppi progetti usano la sottolineatura non è così magica per decorare privati. Quindi, in un certo senso questo è già una soluzione ampiamente accettata al problema.

Se non si desidera che e davvero, davvero bisogno di white-box test di unità, allora si può sempre integrare i test nei vostri oggetti. Se si dispone di un passaggio di generazione separata per il codice di produzione (riduzione al minimo, richiedono / fornire-risoluzione, ecc), allora è possibile rimuovere le funzioni di test in questo processo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top