Sto provando a cambiare i miei test unitari di ArcGIS e inizio usando i mock (io uso il rhino).
Quando ho iniziato a scrivere i test, ho notato che dovevo iniziare a deridere un sacco di oggetti, e bloccare molti metodi per far passare anche un singolo test.
Per esempio - il mio controller prima ottiene un RelationshipClass
(quindi ho bisogno di stub il IWorkspace
e restituita IRelationshipClass
), poi si fa anche un IFeature
(A stub), e, infine, chiama stubRelClass.GetRelatedObjects(stubFeature)
, per restituire un ISet
di altri IFeatures
.unit test smell
È normale dover eseguire lo stub di molti oggetti e metodi per farlo passare? Mi sento anche come ho davvero bisogno di scavalcare il codice (sì - so che avrei dovuto scrivere i test prima, sto ancora provando questo), al fine di capire che cosa spegnere fuori e cosa dovrei tornare .
Ho anche problemi con le classi com di derisione che implementano più di un'interfaccia. Nel codice di produzione I li ho tra le interfacce. Come posso creare una simulazione che implementa entrambe le interfacce in fase di runtime?
di introdurre un oggetto che taglia i livelli di profondità - si "salva" me dal beffardo alcuni più oggetti (dal momento che questo un oggetto coprirà per loro), ma mi piacerebbe ancora bisogno di prendere in giro circa la stessa quantità di metodi, giusto? O mi sto sbagliando? –
Il punto non è "salvarti" dal prendere in giro altri oggetti. Il punto è che il test sta cercando di dirti che c'è un concetto mancante, ecco perché è così complicato. –