Ho cercato di scoprire se c'è una domanda simile ma non sapevo nemmeno quali parole chiave dovrei usare:)
Ho ottenuto un metodo in un'interfaccia accettando un'altra interfaccia come parametro:
bool CanDoIt(AnInterface subject)
Una delle implementazioni deve soddisfare il requisito che il metodo restituisca false per tutti i tipi di calcestruzzo (implementando AnInterface) diverso da X.
Potrebbe esserci un'implementazione semplice (non l'ho scritta dal momento che non ha ottenuto UT per questo):
bool CanDoIt(AnInterface subject)
{
if(!(subject is X)) return false;
else ...
}
So che questo è un odore di codice che accetta un'interfaccia e poi ne controlla il tipo concreto - sfortunatamente per ora ho avuto il merito di farlo.
Vorrei scrivere un test per verificare se il requisito è implementato correttamente. In modo che il test fallirebbe se qualcuno aggiungesse mai un nuovo tipo implementando AnInterface e cambiasse il metodo per non soddisfare il requisito.
Se scrivere un test del genere non è possibile, cosa posso fare per considerare il test codificato? Sarebbe sufficiente scrivere un test usando pochi tipi esemplari, o è meglio non scriverlo affatto?