2012-06-13 37 views
1

爲什麼此代碼在運算符中拋出ShimNotSupportedException?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); 
      } 

     } 

回答

0

我跑你的代碼,並在VS 2012 RC中正常工作。當我在VS 2010中創建的VS 11 Beta中打開了一個解決方案時,我確實遇到過類似的問題。唯一的解決方法是我在VS 11 Beta中創建了一個新的解決方案。

0

其中一個可能的原因是缺少fakesconfig文件應該已經一起產生與您的xxx.fakes.dll。

我使用了一箇中央項目來生成僞裝配,並使用其他項目,這些項目依賴於中央項目來使用生成的僞裝配。

我們稱之爲假裝配消耗項目FOO。

我確實遇到過ShimNotSupportedException。經過一些調查(幾天!)後,我發現fakesconfig文件不會與假裝裝一起復制到FOO.dll所在的文件夾中。在那裏複製fakesconfig文件後,我的測試通過了。

希望這會有所幫助。

0

發生這種情況的另一種情況是當您安裝了Typemock並且它已啓用。

禁用on typemock - >掛起嘲012

相關問題