C# Ms Fakes框架,不支持例外
为什么此代码在运算符中抛出ShimNotSupportedExceptionC# Ms Fakes框架,不支持例外,c#,mocking,microsoft-fakes,C#,Mocking,Microsoft Fakes,为什么此代码在运算符中抛出ShimNotSupportedException ShimStreamReader.AllInstances.EndOfStreamGet = ((s)=>calls < 1); [TestMethod] public void GetAllLinesFromFile__() { int calls = 0; using (ShimsContext.Create())
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);
}
}
ShimStreamReader.AllInstances.EndOfStreamGet=((s)=>调用<1);
[测试方法]
public void GetAllLinesFromFile__()的
{
int=0;
使用(ShimsContext.Create())
{
ShimStreamReader.AllInstances.EndOfStreamGet=((s)=>调用<1);
ShimStreamReader.AllInstances.ReadLine=(s)=>
{
调用++;
返回“;;;;;;”;
};
var streamFake=new-ShimStreamReader();
var obj=新的MyFile(streamFake,“;”);
Assert.IsTrue(obj.GetAllLinesFromFile().Count()==1);
}
}
我运行了您的代码,在VS 2012 RC中运行良好。当我在VS 11测试版中打开一个解决方案时,我确实遇到了类似的问题,该解决方案是在VS 2010中创建的。我找到的唯一解决办法是在VS 11 Beta版中创建一个新的解决方案。可能是您正在从Resharper或其他testrunner运行测试吗
我写了一些与此相关的博客文章,可能会有所帮助:
可能的原因之一是缺少应与xxx.fakes.dll一起生成的fakesconfig文件 我使用一个中心项目来生成假程序集,并使用依赖于中心项目的其他项目来使用生成的假程序集 让我们称之为伪程序集消费项目FOO 我确实遇到了ShimNotSupportedException。经过一些调查(几天!),我发现fakesconfig文件没有与假程序集一起复制到FOO.dll所在的文件夹中。在那里复制了fakesconfig文件之后,我的测试通过了
希望这能有所帮助。另一种情况是安装了Typemock并启用了它
禁用Typemock->Suspend mock是,当您尝试在第三方测试工具中运行伪造测试时,此异常是典型的。