Sto lavorando su un progetto C incorporato in cui è presente una funzione utilizzata per inizializzare l'handle dell'oggetto contesto di un modulo (foo). Pertanto, durante il test utilizzando Ceedling ho utilizzato questa funzione di inizializzazione nella configurazione:
#include "unity.h"
#include "mock_bar.h"
#include "foo.h"
static foo_handle s = NULL;
void setUp(void)
{
s = foo_init(&bar_assertAlert, &bar_releaseAlert);
}
Come puoi vedere la funzione foo_init()
richiede due maniglie per le funzioni da un altro modulo (barra). Ciò consente a quelle funzioni di essere chiamate nel caso di un evento asincrono. Il modulo barra viene deriso da Ceedling in modo che possa testare l'utilizzo di tali funzioni in alcuni test.
Tuttavia, poiché le funzioni della barra sono prese in giro, i rapporti di setUp come test falliscono ogni volta poiché la funzione init chiama effettivamente il bar_releaseAlert per garantire che sia stato iniziale.
"Function bar_releaseAlert. Called more times than expected."
Posso aggiungere un "ignore" al setup, come sotto, ma mi sembra sbagliato avere il codice del tipo di test in un set up o in un down. Forse questa ipotesi è sbagliata?
void setUp(void)
{
bar_releaseAlert_Ignore();
s = foo_init(&bar_assertAlert, &bar_releaseAlert);
}
O è questo povero disegno da parte mia? Come posso testare un modulo che utilizza una funzione fittizia in cui il setup chiama quella funzione fittizia?