Test per confermare il messaggio con un componente casuale

1

Sto scrivendo un sistema di autenticazione che utilizza messaggi formattati XML tra client / server. Una corretta autenticazione nome utente / password deve restituire un ID sessione generato a caso sul client:

<?xml version="1.0"?>
<amhAPI>
    <auth>
        <sessionId>728c91ea-2ead-4fa9-93c5-3a8453174bea</sessionId>
    </auth>
</amhAPI>

Come scrivo un test unitario in grado di confermare il formato del messaggio di successo, dal momento che non posso semplicemente eseguire una corrispondenza di stringa diritta a causa del componente casuale?

    
posta HorusKol 31.05.2011 - 02:58
fonte

2 risposte

2

Davvero non puoi, almeno se non hai alcun controllo diretto sulla fonte del componente.

Puoi generare un valore, e poi usare una regex o un metodo simile per testare il formato pur essendo agnostico del valore esatto, ma poiché questo è apparentemente random , dovresti eseguirlo numero infinito di volte per garantire che ogni uscita possibile sia valida.

Se hai il controllo sul componente, devi separare la parte che esegue l'autenticazione con la parte che genera un ID di sessione, usando la composizione o l'ereditarietà. Nel primo caso, passa il tuo generatore e verifica che restituisca lo stesso valore (costante) del tuo generatore; in quest'ultimo caso, si scrive una classe derivata falsa che sovrascrive il metodo di generazione e restituisce un valore costante, che viene quindi confrontato con l'output.

In realtà, questo è solo un buon design in generale, non specificamente per la testabilità. Se questa classe esegue l'autenticazione e la creazione della sessione e della serializzazione XML, allora ci sono troppe responsabilità per una classe; invece, separare ciascuna caratteristica nella propria classe e, se è necessario comporli in un unico aggregatore "Session Authenticator", è possibile testare l'aggregato con i mock, poiché sono già stati testati i singoli componenti (autenticazione + sessione Serializzazione ID + XML + ecc.).

    
risposta data 31.05.2011 - 03:55
fonte
1

nel test, restituisce una costante

o semplicemente controlla il formato stringa xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

all'interno del messaggio struture

Se vuoi testare la casualità degli ID restituiti, che è un test separato indipendente dal wrapper dei messaggi XML

    
risposta data 31.05.2011 - 03:35
fonte

Leggi altre domande sui tag