2009-05-31 70 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