2010-05-12 2 views
1

J'essaye d'écrire un test en utilisant Rhino Mocks 3.6 avec AAA. Le problème que je rencontre est que le Stub que j'ai configuré ne semble pas retourner l'objet correct.Stub ne retourne pas la valeur correcte avec Rhino Mocks 3.6

Le test échoue suivant:

[SetUp] 
    public void SetUp() 
    { 
     repository = new MockRepository(); 
     webUserDal = repository.Stub<IWebUserDal>(); 
    } 

    [Test] 
    public void Test() 
    { 
     var user1 = new WebUser{Status = Status.Active, Email = "[email protected]"}; 
     webUserDal.Stub(x => x.Load(Arg<string>.Is.Anything)).Return(user1); 

     var user2 = webUserDal.Load("[email protected]"); 

     Assert.AreEqual(user1.Email, user2.Email); 
    } 

propriété email de l'utilisateur 1 est [email protected] alors que la propriété email de l'utilisateur 2 est null

Quelqu'un pourrait-il faire la lumière sur ce que je fais mal?

+0

Juste une pensée, le getter d'email fait-il quelque chose? –

+0

C'est juste une propriété de base – Jon

+0

Ceci est la définition: chaîne virtuelle publique Email {get; ensemble;} – Jon

Répondre

3

Vous avez mélangé l'ancienne et la nouvelle syntaxe, et cela ne semble pas fonctionner correctement. Si vous souhaitez utiliser la nouvelle syntaxe (de préférence), vous devez changer votre méthode pour mettre en place:

[SetUp] 
public void SetUp() 
{ 
    webUserDal = MockRepository.GenerateStub<IWebUserDal>(); 
} 

Si vous créez l'objet MockRepository alors vous devez exécuter repository.ReplayAll() avant d'utiliser les simulacres , mais c'est la vieille syntaxe. Il vaut donc mieux utiliser des méthodes statiques.

Questions connexes