2009-05-31 72 views
16

返回一个密封类运行该代码的方法:惩戒,在RhinoMocks

_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

这应该有返回字符串的方法我经常模拟接口工作。我怀疑你有另一个问题。我们能看到更多的代码吗? – tvanfosson 2009-05-31 11:46:40

+0

它现在适用于我,不知道是什么问题。 – ripper234 2009-05-31 13:37:47

回答

23

犀牛嘲笑似乎是捕捉和处理这个例外。如果您已将异常作为断点启用,您只能在VS.NET调试器中看到它。看起来,您可以安全地继续运行这个异常断点,并且它可以按预期工作。

1

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

1

我有同样的问题,它必须是一些VS工作室调试设置或一些不足,我猜犀牛嘲笑的访问权限。 我很确定它不是造成这种情况的代码。

2

这种情况发生在你没有在工具 - >选项 - >调试 - >常规下启用“只是我的代码”,并且你在调试 - >异常下选择了“抛出”CLR异常。最简单的方法就是在工具 - >选项 - >调试 - >常规下启用“只是我的代码”。

enter image description here

0

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

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

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

的异常处理和编码/嘲讽按预期工作,只是做F5