2012-06-13 2 views
1

Pourquoi ce code lance-t-il ShimNotSupportedException dans l'opérateur?Ms Fakes Framework, NotSupportedException

ShimStreamReader.AllInstances.EndOfStreamGet = ((s)=>calls < 1); 

[TestMethod] 
     public void GetAllLinesFromFile__() 
     { 
      int calls = 0; 

      using (ShimsContext.Create()) 
      { 
       ShimStreamReader.AllInstances.EndOfStreamGet = ((s)=>calls < 1); 
       ShimStreamReader.AllInstances.ReadLine = (s) => 
                  { 
                   calls++; 
                   return ";;;;;;;;;;"; 
                  }; 
       var streamFake = new ShimStreamReader(); 
       var obj = new MyFile(streamFake, ';'); 

       Assert.IsTrue(obj.GetAllLinesFromFile().Count() == 1); 
      } 

     } 

Répondre

0

J'ai exécuté votre code et fonctionne correctement dans VS 2012 RC. J'ai fait face au même problème lorsque j'ai ouvert une solution dans VS 11 Beta qui a été créée dans VS 2010. La seule solution de contournement que j'ai trouvée était de créer une nouvelle solution dans VS 11 Beta.

0

L'une des causes possibles est manquante des fichiers fakesconfig qui auraient dû être générés le long avec votre xxx.fakes.dll.

J'ai utilisé un projet central pour générer des assemblys Faux et utiliser d'autres projets qui dépendent du projet central pour consommer les assemblys Fake générés. Appelons le projet consommant FOO.

J'ai rencontré l'exception ShimNotSupportedException. Après quelques recherches (plusieurs jours!), J'ai trouvé que les fichiers fakesconfig n'étaient pas copiés avec les assemblys Fake dans le dossier où réside FOO.dll. Après avoir copié les fichiers fakesconfig, mes tests sont passés.

Espérons que cela aide.

0

Un autre cas où cela se produit est lorsque vous avez installé Typemock et qu'il est activé.

Désactiver le Typemock -> Suspend Mocking

Questions connexes