2010-07-26 90 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(可能用你自己的类型包装)返回你需要的任何东西,这样你可以嘲笑这一点。