SetMolePublicInstance的正确参数类型是什么?

时间:2012-03-27 14:25:49

标签: moles

我很感激为Moles方法提供正确的参数类型提供了一些帮助。目的是骚扰一个公共实例。我不是技术人员。

这是我的尝试。 (注释显示了来自对象浏览器的“SetMolePublicInstance()”的定义:

[ __DoNotInstrument]
public static class Deq
{
    public static void Replace<T>(
        //SetMolePublicInstance( System.Delegate _stub, System.Type receiverType, _
        // object _receiver, string name, params System.Type[] parameterTypes)

        Func <T> stub,          // need help for the correct parameter types            
        Func <Object > receiverType,
        Func <T> objectReceiver,
        string methodName,
        Func <T> parameterTypes)
    {
            //SetMolePublicInstance( System.Delegate _stub, System.Type receiverType, _
            // object _receiver, string name, params System.Type[] parameterTypes)
            MoleRuntime .SetMolePublicInstance(stub, receiverType, objectReceiver, methodName, parameterTypes;
                // the previous line produces the error: "The best overloaded method match for ...  has some invalid arguments"
    }
}

这是我目前的测试代码。在找到上面的Replace()方法中的各种参数类型之前,我无法完成此代码:

[ Test]
public void StaticMethodUnitTestWithDeq()
    {  
        using (MolesContext .Create())
        {
            Class1 objectReceiver = new Class1();

            Deq .Replace(
                () => "New value" ,        // stub
                () => Class1 ,           // receiverType
                () => objectReceiver,   // objectReceiver
                () => "TestString" ,     //  methodName
                () => null );          // parameterTypes

            //Assert.AreEqual(new DateTime(2000, 1, 1), Class1.DateTime.Now);
        }
    }

以下是Class1的代码:

public class Class1
{
    public string TestString() { return "Original value" ; }
}

编辑:

通过使用“null”的各种组合,我发现接受以下声明:

MoleRuntime.SetMolePublicInstance(stub, null, objectReceiver, methodName, null);

因此,这意味着不正确的类型用于第二个参数“receiverType”和最后一个参数“parameterTypes”。

0 个答案:

没有答案