Comment remplacer une méthode de tests unitaires qui est appelée à partir de laquelle la classe d'être testé

Je suis en train de tester un de catégorie A de la fonction func1.

Func1 a une variable locale de la Classe B et les appels B de la fonction func2. Le Code ressemble à ceci:

public Class A
{
    public func1()
    {
       B object = new B();
       int x = object.func2(something);
    }
}

Quand je suis en train de tester func1 dans ses tests unitaires, je ne veux pas func2 à être appelé.

Donc je suis en train de faire quelque chose comme cela dans le test:

B textObject = new B()
{
   @override
   int func2(something)
   {
      return 5;
   }
}

Mais il est toujours à l'appel de la func2 dans la classe B. Veuillez indiquer comment gérer cela.

  • Pourriez-vous utiliser l'injection de dépendance, refactoring A de prendre B comme un argument plutôt que de créer une new au sein de la fonction? Avec un tel résumé exemple, il est difficile de donner des conseils judicieux.
  • Je ne peux pas vraiment prendre B comme une entrée dans Un constructeur, ni dans le func1 comme une entrée parce que je suis primordial func1 dans la classe A. je peux faire B comme une variable de classe dans Un, mais cela ne semble pas aider non plus. Que suggéreriez-vous dans ce cas?
  • Je ne suis pas sûr de ce que le problème est, de nouveau, l'exemple est trop abstrait. Faire de la recherche autour de DI.
  • Résolu ce problème en utilisant l'injection de dépendance, merci pour l'aide.
  • dans ce cas, vous pouvez écrire et d'accepter votre propre réponse, au lieu d'accepter celui qui n'est pas réellement comment vous avez résolu le problème!
  • Ce que vous écrivez n'a pas de sens. Que signifie "je suis primordial func1 dans la classe A" à faire avec les arguments que vous fournissez dans le constructeur de cette classe. Le point est: si votre code repose sur les objets extérieurs, et que vous souhaitez modifier le comportement de ces objets externes, alors vous avez besoin d'un moyen pour "injecter" ces objets dans votre classe de test.

InformationsquelleAutor Khawar Ali | 2016-05-15