2009-09-23 10 views
20

Si je veux simuler une classe qui retourne une chaîne utilisée pour déterminer si while loop doit continuer (imaginez read while string! = Null), comment puis-je définir l'attente . Je l'ai essayé ce qui suit:Plusieurs appels à une méthode roguée par Rhino retournent des résultats différents

provider.Reader.Expect(r => r.ReadLine()).Return("1,10,20"); 
    provider.Reader.Expect(r => r.ReadLine()).Return(null); 

mais quand il est appelé deux fois dans la même méthode, il retourne la première chaîne dans les deux cas, alors que je veux revenir à la deuxième valeur (null) si elle est appelée une deuxième fois .

Répondre

28

Je pense que vous pouvez simplement coller la répétition à la fin de la syntaxe que vous utilisez actuellement.

provider.Reader.Expect(r => r.ReadLine()).Return("1,10,20").Repeat.Once(); 
provider.Reader.Expect(r => r.ReadLine()).Return(null).Repeat.Once(); 

ou

provider.Reader.Expect(r => r.ReadLine()).Return("1,10,20").Repeat.Once(); 
    provider.Reader.Expect(r => r.ReadLine()).Return(null); 

si vous avez des appels au-delà de 2ème appel que vous souhaitez utiliser deuxième attente.

0

Je ne connais pas la syntaxe que vous utilisez. Je voudrais écrire cela comme:

r.ReadLine(); 
LastCall.Return("1,10,20").Repeat.Once(); 
r.ReadLine(); 
LastCall.Return(null).Repeat.Once(); 

Pour vous assurer que vous spécifiez le nombre de fois que les choses doivent être répétées. (Ne pas avoir Visual Studio à portée de main, la syntaxe peut ne pas être exacte.)

+0

C'est la syntaxe courante de 3.5. –

Questions connexes