NativeMethods.cs没有鼹鼠类?

时间:2012-02-08 06:51:04

标签: mstest moles pex-and-moles

我有一个名为NativeMethods.cs的类,它包含所有extern方法:

internal static class NativeMethods
{
    [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
    [return: MarshalAs(UnmanagedType.Bool)]
    internal static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool wow64Process);

    [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
    internal static extern int RegOpenKeyEx(
        IntPtr hKey,
        string subKey,
        int ulOptions,
        int samDesired,
        out int hkResult);
}

包含此类的程序集具有相应的.Moles文件。除了这一个之外,程序集中包含的所有其他类都可以正确地进行存根和存根。

我们可以使用MNativeMethods来绕行。是否有针对班级名称的特殊情况" NativeMethods" (不大可能)?或者针对外部方法的特殊情况?

2 个答案:

答案 0 :(得分:0)

Moles能够绕过对托管代码的调用。这个类显然没有处理托管代码。尝试手动为此类创建存根。这意味着创建一个INativeMethods接口,让NativeMethods实现INativeMethods,然后像往常一样使用接口作为存根。然后,Moles将从界面生成存根类型的SINativeMethods,用于测试项目。

答案 1 :(得分:0)

“因此,如果方法没有正文(例如抽象方法),我们就不能绕道而行。” - Moles Dev