Ultimamente mi sono imbattuto in un problema di TypeMock veramente subdolo. Lo scenario e' il seguente: supponete di avere una classe X, dotata di costruttore statico (dove, ad esempio, viene inizializzato un membro statico, come un hash o un array).
Supponete di scrivere una fixture dove la classe X viene mockizzata. Supponete poi di scrivere una fixture che testa proprio la classe X. Ebbene, se l'ordine di esecuzione e' questo, allora la seconda fixture probabilmente fallira'.
A quanto pare, TypeMock in qualche modo provoca l'esecuzione del costruttore statico al momento della mockizzazione (cosa usualmente non richiesta) ma, quando poi viene instanziato un oggetto della classe X per la prima volta tale costruttore non viene piu' richiamato. Il problema e' veramente subdolo, poiche' il successo o fallimento dei test dipende dall'ordine di esecuzione dei test.
Fortunatamente, c'e' la soluzione. Basta dire a TypeMock di non mockizzare il costruttore statico, cosi:
MockManager.Mock(typeof(X), Constructor.StaticNotMocked);
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento