2010-07-26 233 views
2

是否可以使用Rhino Mocks來模擬WindowsImpersonationContext?Rhino Mocks嘲笑WindowsImpersonationContext

我得到:

system.missingMethodException而:無法找到匹配的參數的構造函數 ----> system.missingMethodException而:在類的構造 'WindowsImpersonationContextProxy04bee852de914d5b8a47d6776edc4cb3'

var windowsImpersonationContext = mockRepository.Stub<WindowsImpersonationContext>(); 
mockImpersonation.Stub(x => x.ImpersonateUser("username", "domain", "password")).Return(windowsImpersonationContext); 

這裏是我的代碼我需要模擬

public interface IImpersonation 
{ 
    WindowsImpersonationContext ImpersonateUser(string sUsername, string sDomain, string sPassword); 
} 
+0

PFF,該代碼只有3行,並且您的變量名拼寫錯誤。可能犀牛是不高興的。好的,我嘲笑你的代碼。 – rook 2010-07-26 16:09:36

+0

非常有趣....! – Coppermill 2010-07-27 10:46:26

回答

1

看起來要存根IImpersonation,沒有風owsImpersonationContext。這是由IImpersonation.ImpersonateUser返回的內容。

但是,WindowsImpersonationContext沒有公共構造函數,因此您無法創建一個模擬測試。您可能想要爲WindowsImpersonationContext創建一個接口。爲接口進行測試和生產,創建一個包裝類,實現接口並將調用委託給真正的WindowsImpersonationContext。

0

您不能存根/模擬WindowsImpersonationContext,因爲它是一個具體的類。我不認爲你可以自己創建它(對不起,我沒有VS方便檢查),所以我會建議改變你的界面,以便從WindowsImpersonationContext(可能用你自己的類型包裝)返回你需要的任何東西,這樣你可以嘲笑這一點。