17

运行此代码:

_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();
   }
}

throws NotSupportedException - “无法创建密封类的模拟”。我理解为什么你不能模拟一个密封类(尽管 TypeMock 中有解决方案),但是模拟一个返回密封类(字符串)的类有什么问题?

4

5 回答 5

27

Rhino Mocks 似乎正在捕获并处理此异常。如果您已启用异常作为断点,则只能在 VS.NET 调试器中看到它。看来您可以安全地继续运行这个异常断点,并且一切都按预期工作。

于 2012-01-10T01:43:26.963 回答
2

当您没有在 Tools->Options->Debugging->General 下启用“仅我的代码”并且您有 CLR 异常,在 Debug->Exceptions 下选择了“Thrown”时,就会发生这种情况。修复它的最简单方法是在工具->选项->调试->常规下启用“只是我的代码”。

在此处输入图像描述

于 2013-07-24T03:23:36.007 回答
1

您的代码工作正常。您可能有一些其他未显示的代码导致问题。在此处发布您的整个单元测试,我们将为您诊断问题。

于 2009-07-20T06:12:46.283 回答
1

我有同样的问题,我猜它必须是一些 VS Studio 调试设置或 rhino 模拟的访问权限不足。我很确定这不是导致这种情况的代码。

于 2011-11-28T12:03:58.703 回答
0

我第二点 - 这不是代码的问题。这是VS调试设置。

我在调试下面的代码时遇到了同样的异常,同时尝试将 Arg.Is.Anything 作为参数发送到存根。

mockPermissionManager.Stub(item => item.HasAccess(Arg<string>.Is.Anything)).Return(true);

处理异常并且代码/模拟按预期工作,只需执行 F5

于 2015-04-16T13:12:25.617 回答