Comment MOQ une propriété Indexée
Je suis tenter de se moquer d'un appel à une propriété indexée. I. e. Je voudrais moq suivantes:
object result = myDictionaryCollection["SomeKeyValue"];
et aussi le poseur de valeur
myDictionaryCollection["SomeKeyValue"] = myNewValue;
Je le fais parce que j'ai besoin pour se moquer de la fonctionnalité d'une classe de mon application utilise.
Personne ne sait comment faire cela avec MOQ? J'ai essayé de variations sur les points suivants:
Dictionary<string, object> MyContainer = new Dictionary<string, object>();
mock.ExpectGet<object>( p => p[It.IsAny<string>()]).Returns(MyContainer[(string s)]);
Mais qui ne compile pas.
Est ce que je suis en train de réaliser possible avec MOQ, quelqu'un aurait-il des exemples de la façon dont je peux le faire?
- Ne serait-il pas plus facile de simplement utiliser un objet stub? Définir les valeurs nécessaires et vérifier les indices dont vous avez besoin.
Vous devez vous connecter pour publier un commentaire.
Il n'est pas clair ce que vous essayez de faire, parce que vous ne montrez pas la déclaration de la maquette. Êtes-vous essayer de se moquer d'un dictionnaire?
MyContainer[(string s)]
n'est pas valide en C#.Cette compile:
SetupSet
au lieu deExpectGet
. fonctionne également pour les setters ainsi.Cendres, si vous voulez avoir de la Session HTTP moquer, alors ce bout de code fait le travail:
TestSuiteBase
une bibliothèque ou de votre propre classe?Comme vous l'avez repéré, il y a des méthodes distinctes
SetupGet
etSetupSet
pour initialiser les getters et les setters respectivement. Bien queSetupGet
est destiné à être utilisé pour les propriétés, pas indexeurs, et ne vous permettra pas de clé de traitement est passé. Pour être précis, pour les indexeursSetupGet
appelleraSetup
de toute façon:Pour répondre à votre question, voici un exemple de code à l'aide de sous-jacents
Dictionary
pour stocker des valeurs:Comme vous pouvez le voir, vous devez spécifier explicitement la clé pour configurer l'indexeur setter. Les détails sont décrits dans un autre DONC, la question: Moq une propriété indexée et utiliser la valeur de l'indice dans le retour/rappel
Il n'est pas difficile, mais il a pris un peu pour les trouver 🙂
Il semble que ce que je tente de faire le MOQ est pas possible.
En fait, j'ai été de tenter de MOQ un HTTPSession type d'objet, où la clé de l'élément en cours de jeu à l'indice peut seulement être déterminé au moment de l'exécution. L'accès à la propriété indexé nécessaire pour renvoyer la valeur qui a été définie précédemment. Cela fonctionne pour un nombre entier en fonction des indices, mais de chaîne en fonction des indices de ne pas travailler.