2010-02-03 6 views
2

Dans une méthode dans le présentateur, je m'attends à une méthode de vue à appeler.Cette méthode est également transmis des données extraites d'une méthode de service (qui n'est pas moqué). Cette méthode de service obtient essentiellement des données la base de données et retourne la liste (LINQ to SQL) .Maintenant, quand j'écris ceci dans le testIncapable de comprendre rhino mocks problème

List<customers> cus = expecteddata; 
view.AssertWasCalled(v => v.InitializeCustomersForSelectedCity(cus));  

Rhino.Mocks.Exceptions.ExpectationViolationException: ICustomerListView.InitializeCustomersForSelectedCity(System.Collections.Generic.List`1[DAL.Customer]); Expected #1, Actual #0. 

le code que je teste en présentateur

public void HandleSelectedCity(int City) 
    { 
     selectedCity = City ; 
     _custometListForm.InitializeCustomersForSelectedCity(_CustomerListService.GetActiveCustomersForSelectedCity(selectedCity));    
    } 

quand j'ignorer les arguments, les travaux d'essai bien Quel pourrait être le problème?

Répondre

3

Votre assertion crée une attente basée sur cus, une variable définie dans le test unitaire. Toutefois, lorsque InitializeCustomersForSelectedCity est appelé, il est appelé avec le résultat de GetActiveCustomersForSelectedCity - une instance différente de List<customers>.

Les configurations d'attentes effectuent essentiellement une opération object.Equals sur l'instance attendue et l'instance réelle. Dans votre cas, ils sont différents, et l'attente n'est pas satisfaite. Soit vous devez relâcher votre attente pour accepter List<customers>, soit vous devez simuler GetActiveCustomersForSelectedCity afin de pouvoir définir le résultat renvoyé par le test unitaire.

+0

ok merci.J'ai décidé de diviser le test en 2 - un test d'interaction, la méthode a été appelée.Et, un autre test pour la méthode de service –