2009-10-28 3 views
1

Je rencontre des problèmes en se moquant d'un tableau avec Rhino Mock, toute direction serait géniale.Mocking un tableau de type avec Rhino Mock

namespace Checks_Rhino_Mocks 
{ 
    public class Check 
    { 
     public Header header; 
     public Detail[] details; 
    } 

    public class Header 
    { 
     public string Number; 
     public decimal Amount; 
    } 

    public class Detail 
    { 
     public string Id; 
    } 


    [TestFixture] 
    public class CheckUT 
    { 
     [Test] 
     public void CheckShouldHaveMultipleDetails() 
     { 
      MockRepository mock = new MockRepository(); 

      Check check = mock.StrictMock<Check>(); 
      check.header = mock.StrictMock<Header>(); 
      //issue 
      check.details = mock.StrictMock<Detail[]>(); 
     } 
    } 
} 
+0

Quelles sont les erreurs que vous obtenez? –

+0

Erreur 'System.NotSupportedException: impossible de créer des mocks de classes scellées'. Quant à l'utilisation de IEnumerable, il y aurait un problème de type cast. –

Répondre

0

Lors de la création des chèques détails, vous aurez probablement à faire avec IEnumerable:

check.details = mock.StrictMock<IEnumerable<Detail>>(); 

au lieu d'un tableau ...

1

Vous ne pouvez pas se moquer Check.details parce que ce n'est pas virtuel. RhinoMocks, Moq, etc, ne peuvent pas se moquer des méthodes non virtuelles.

Pour résoudre ce problème, rendre le champ virtuel:

public class Check 
{ 
    public virtual Header header; 
    public virtual Detail[] details; 
} 

Mais ... et voici le vrai problème: pourquoi vous essayez de se moquer d'un tableau de détail? Qu'est-ce que vous essayez de faire, exactement? Expliquez ce que vous essayez de faire et nous serons en mesure de vous aider vraiment.

0

pourquoi ne pas simplement créer un tableau? Y at-il une raison pour laquelle vous voulez vous moquer d'un tableau? Je pense que vous pourriez simplement utiliser un tableau réel et affirmer que vous avez tous les éléments (qui pourraient être des exemples fictifs) dans le tableau que vous voulez. c'est difficile pour moi d'imaginer le test que vous ne pourriez pas faire avec juste un tableau.

Questions connexes