Question

J'ai été en utilisant RhinoMocks ces derniers temps, mais je continue à courir dans un problème.Si je me casse dans le débogueur de code alors qu'une maquette est en mode d'Enregistrement, je finis par obtenir une exception le long des lignes de:

System.InvalidOperationException: Previous method 'SuchAndSuch.ToString();'  
requires a return value or an exception to throw.

Mais si j'exécute le même code sans rupture dans le débogueur, il va exécuter avec succès et créer la maquette.

Je suis assez sûr que la raison pour cela est que le débogueur appels ToString() sur les objets à afficher dans les Locaux et d'autres fenêtres d'observation.Mais depuis la maquette est en mode d'enregistrement RhinoMocks considère un appel à ToString() pour une installation d'attentes qui, ensuite, n'est pas tout à fait correctement.Évidemment, cela se produit uniquement avec les objets fantaisie partiels sur les classes de béton.On se moque de contre interfaces ne présentent pas ce comportement.

Autres personnes rencontrer ce genre de problème?Est-il une solution simple?Faire d'autres cadres tels que moq ou TypeMock ont ce problème?

Merci,

~ Justin

Était-ce utile?

La solution

Je me souviens d'avoir un problème similaire avec NMock il y a plusieurs années.Fondamentalement, ce problème se produit exactement parce que le débogueur appelle et affiche les propriétés à l'aide de la ToString méthode (sauf si vous utilisez DebuggerDisplayAttribute ou similaire).

Cela peut être particulièrement problématique si vous utilisez stricte se moque de parce qu'ils vous permettent d'appeler un membre le nombre de fois spécifié, et le débogueur interfère avec cette.À l'aide de lâche se moque de les adresses ce (et de nombreux autres problèmes.

Vous pouvez également déplacer loin de l'enregistrement/lecture mécanisme de Rhinocéros se moque et commencer à utiliser la plus récente et beaucoup mieux lambda syntaxe.

Moq utilise lamda syntaxe (presque) exclusivement, et je n'ai jamais eu de problèmes avec elle - mais là encore, je n'ai pas de débogage beaucoup ces jours-ci, les tests unitaires sont devenus un substitut pour le débogage.

Encore un autre remède est tout simplement pour masquer la Autos et Les habitants les fenêtres du débogueur.

Autres conseils

Comme Mark l'a suggéré, ce problème devrait disparaître si vous arrêtez d'utiliser l'enregistrement-replay-vérifier approche et de commencer à l'aide de talons recommandés AAA approche (organiser, d'agir, de faire valoir) à la place.

J'ai essayé d'expliquer la différence et comment faire les deux avec Rhino se moque dans cette post de blog.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top