2009-10-26 4 views

Répondre

4

La réponse standard consiste à redéfinir votre classe afin que vous puissiez simuler la dépendance. Ceci est généralement fait en injectant votre source de données en tant qu'interface dans votre classe.

par exemple. Vous pouvez avoir une classe qui agit comme ci-dessous

class John 
{ 
    public John() { } 
    public void Load() 
    { 
      // call to db in here e.g SQLCommand 
    }     
} 

charge dépend du SQLCommand de sorte que vous aurez toujours besoin d'appeler un db pour cette

Si vous injectez une interface DataSource vous avez plus de flexibilité

par exemple

class John 
{ IDataSource _db; 
    public John(IDataSource db) 
    { 
     _db = db; 
    } 
    public void Load() 
    { 
     _db.Load("John"); // IDataSource can now be either SQL 
     //or hardcoded or what ever much easier to test 
    }     
} 

Maintenant, si vous ne pouvez pas/ne fera pas que vous devez traiter ce test comme un test d'intégration. Que diriez-vous de mettre en place des données pour cela. par exemple. insérez la ligne que vous voulez lire. Retournez ensuite les données à leur état d'origine. L'inconvénient est que votre test sera lent et fragile.

Questions connexes