运行此代码:
_foo = MockRepository.GenerateStub<IBar>();
_foo.Stub(x => x.Foo()).Return("sdf");
当
public interface IBar
{
string Foo();
}
public class Bar : IBar
{
public string Foo()
{
throw new NotImplementedException();
}
}
抛出NotSupportedException - “无法创建密封类的模拟”。我明白为什么你不能模拟一个密封的类(虽然在TypeMock中有解决方案),但是模拟一个返回密封类(字符串)的类有什么问题?
答案 0 :(得分:26)
Rhino Mocks似乎正在捕捉并处理此异常。如果您已将异常作为断点启用,则只能在VS.NET调试器中看到它。看起来您可以安全地继续运行此异常断点,并且一切都按预期工作。
答案 1 :(得分:2)
如果您没有在工具 - >选项 - &gt;调试 - &gt;常规下启用“仅我的代码”,并且您有CLR异常,在Debug-&gt; Exceptions下选择了“Thrown”,则会发生这种情况。最简单的解决方法是在工具 - &gt;选项 - &gt;调试 - &gt;一般情况下启用“仅我的代码”。
答案 2 :(得分:1)
您的代码正常运行。您可能还有一些其他代码未显示导致问题。在这里发布您的整个单元测试,我们将为您诊断问题。
答案 3 :(得分:1)
我有同样的问题,它必须是一些VS工作室调试设置或我猜的犀牛模拟的一些不充分的访问权限。 我很确定它不是造成这种情况的代码。
答案 4 :(得分:0)
我认为 - 这不是代码问题。 这是VS调试设置。
在调试下面的代码时遇到同样的异常,同时尝试将Arg.Is.Anything作为参数发送到存根。
mockPermissionManager.Stub(item => item.HasAccess(Arg<string>.Is.Anything)).Return(true);
处理异常并且代码/模拟按预期工作,只需执行F5