9
votes

MOQ 4.0: L'initialiseur de type pour 'Moq.Mock`1' a lancé une exception

Je reçois l'exception

L'initialiseur de type pour 'Moq.mock`1' jeta une exception.

Utilisation de MOQ 4.0 J'ai vérifié quelques forums et ils font allusion à l'utilisation de la version MOQ-NOCASTLE. J'ai essayé à la fois cette et la version dans le dossier MOQ. Tous deux avec le même résultat.

J'ai une solution avec 2 projets, une pour mon interface, une pour mes tests. Mon projet principal a 2 fichiers:

imyinterface.cs: xxx

mon fichier programme.cs n'a que le code par défaut généré avec le projet. < / p>

Mon projet de test comporte un fichier unique pour mon test factice - testProgram.cs xxx

selon la documentation tout est bon et approprié, et il compile bien bien . Le problème vient lorsque j'essaie d'exécuter le test. Il arrive à la ligne marquée ci-dessus et se bloque à l'exception:

L'initialiseur de type pour 'Moq.mock`1' jeta une exception.

Je ne peux pas voir ce qui ne va pas mal ici, que quelqu'un ne peut-il faire la lumière dessus?


0 commentaires

4 Réponses :


4
votes

J'ai pu exécuter votre test avec succès après avoir apporté les modifications suivantes:

  1. Fabriqué TestSetUp () Public
  2. dans runtest , modifié int val = obj.value à int Val = obj.getvalue () - ceci était juste pour obtenir le affirmer pour passer.

    Je ne connais pas la Nunit (j'utilise Xunit), mais je suppose que le test-test () étant privé était le problème. Lorsque cette méthode est privée, Nunit montre cette exception pour moi: xxx

    peut-être que vous utilisez une ancienne version de Nunit qui a traité cette situation différemment (je viens de télécharger le 2.5.7.10213) .

    HTH


2 commentaires

Merci. Il semble que l'accessoir «public» devait être défini sur la configuration. Ce que je ne pouvais pas comprendre était quand j'ai utilisé le débogueur pour déboguer le test, il a réellement rencontré cette méthode. Donc, mon hypothèse était que cela n'avait pas besoin d'être public.


Je vous en prie. On dirait que Nunit se comportait étrangement et ne donnant pas de bons commentaires.



10
votes

Cela m'a eu lieu lorsque j'ai mis à jour le package Castle.core Nuge à la version 4.0.0. Quelque chose changé qui ne fonctionne pas correctement avec le dernier MOQ (V4.5.30) en ce moment.

j'ai résolu ceci en revenant à la version du château.core 3.3.3 .


1 commentaires

Oui Alfa, d'accord avec vous. Configuration: System.TypeInitialisationException: l'initialisateur de type pour 'Moq.Mock`1' a lancé une exception. ----> System.typeInitialisationException: l'initialisateur de type pour 'Moq.Proxy.CastleProxyFactory "a jeté une exception. ----> System.IO.FileloadException: Impossible de charger le fichier ou l'assemblage 'Castle.core, version = 4.0.0.0, culture = neutre,



3
votes

J'ai eu une exception similaire avec le MOQ (cela avait déjà fonctionné bien).

Pour moi, la solution était d'utiliser Nuget pour désinstaller MOQ et l'assemblage que l'exception mentionnée. Puis réinstallez MOQ à l'aide de Nuget et appliquez toutes les mises à jour Nuppet par la suite.


0 commentaires

-1
votes

J'ai aussi eu ce problème à l'aide de MOQ, mais légèrement différent de Richard.

Mon erreur était la suivante.

Message: System.typeinitialisationException: l'initialisateur de type pour 'Moq.Mock`1' a lancé une exception. ---- System.IO.FilenotFoundException: Impossible de charger le fichier ou l'assemblage 'Microsoft.aspnetcore.razor.Runtime, version = 2.1.1.0, Culture = neutre, PublickeyToken = ADB9793829DDae60'.

Dans mon cas, je n'avais pas besoin de supprimer Mock, installez l'assemblage manquant dans la version correcte. Je ne sais pas pourquoi ce n'était qu'un problème maintenant. Le problème se passe après la fusion des succursales, mais les deux branches n'avaient pas d'assemblées ni montrent cette erreur auparavant. Cependant, finez bien tout le bien.


0 commentaires