Cosa significa stubbing in programmazione?

17

Spesso sento il termine mozzicone, mozzano qualcosa, mozziconi, ... ecc. Cosa significa stubbing nella programmazione, da dove viene la parola? e in quali contesti può essere usato? (solo esempi)

    
posta Islam Wazery 31.01.2015 - 13:36
fonte

3 risposte

22

Un metodo di stub è un metodo che restituisce solo un risultato semplice ma valido (sebbene non necessariamente corretto).

Sono tipicamente realizzati quando si costruisce l'infrastruttura e non si vuole perdere tempo su ogni metodo necessario al momento. Invece si creano stub quindi tutto compila e il completamento automatico dell'IDE conosce i metodi che si prevede di utilizzare.

Un altro punto in cui vengono utilizzati gli stub è il mocking durante il test. Fornisci metodi di stub invece della normale dipendenza tramite l'integrazione delle dipendenze che restituisce risultati fissi e quindi assicurati che il codice faccia la cosa giusta con loro. Questo isola il test del codice che stai cercando di testare e significa che non è necessario creare un database solo per eseguire test.

    
risposta data 31.01.2015 - 13:49
fonte
4

Forse è meglio rispondere con un esempio concreto. Consideriamo il caso in cui si sta creando un'applicazione desktop. Hai deciso di avere una funzione denominata createMenubar , createToolbar e createMain in modo che il costruttore dell'applicazione sia pulito e ordinato.

Il tuo codice principale sarà simile a questo (questo esempio è in python):

class ExampleApp():
    def __init__(self):
        self.createMenubar()
        self.createToolbar()
        self.createMain()

Fino a quando tutto funziona, la tua funzione principale fallirà, quindi come puoi testare la tua app durante lo sviluppo? Ad esempio, se inizi a lavorare su createMenubar , l'inizializzazione avrà esito negativo dopo aver creato la barra dei menu poiché non hai implementato la barra degli strumenti o l'area principale della GUI.

Questo è il punto in cui entrano gli stub. Puoi creare una funzione denominata createToolbar e createMain che soddisfano il requisito del costruttore dell'app (vale a dire che queste funzioni esistono), senza doverle effettivamente implementare. Queste funzioni sono stub:

def createToolbar():
    pass

def createMain():
    pass

Con questi stub in posizione puoi iniziare a implementare il programma principale e la barra dei menu, senza doversi preoccupare dei dettagli della barra degli strumenti o della parte principale del programma. Alla fine, passerai alla barra degli strumenti e sostituirai lo stub con la funzione effettiva. Infine, rimuovi lo stub per createMain e fornisci un'implementazione reale.

Nota che gli stub non devono necessariamente fare nulla. Ad esempio, questi stub potrebbero creare un widget contenitore vuoto che il costruttore dell'app può disporre. Il punto è che crei funzioni fittizie o oggetti che ti bastano per far funzionare l'altro codice mentre lo stai sviluppando. Nel tempo, sostituisci gli stub uno alla volta fino al completamento dell'applicazione.

    
risposta data 31.01.2015 - 21:17
fonte
1

Un "stub" è utilizzato nella programmazione "dall'alto in basso". Questo è quando stai costruendo la tua applicazione dal generale allo specifico. In tal modo, utilizzerai "stub" come "segnaposto" per le applicazioni specifiche che non hai avuto il tempo di creare. Spesso restituiscono valori come fittizi o casuali alla parte più generale del programma. Va bene, lo stub fornisce abbastanza valore per far funzionare la parte più "senior" del programma. Fino al momento in cui lo stub deve essere sostituito o adattato al suo vero calcolo o valore.

    
risposta data 31.01.2015 - 21:26
fonte