2011-06-22 75 views
2

有没有办法使用params关键字来mole /存根/模拟一个方法?在痣中有没有一种方法可以用params关键字来嘲讽/模拟一种方法?

这里是我试图摩尔/存根方法的一个例子:

Void SomeMethod(bool finalizer,params string[] parameters)... 

我试图去痣它像这样:

scriptServiceStub.SomeMethodBooleanStringArray= 
       (bool finalizer, params string[] parameters) => 
        { 
         agentCommCalled = true; 
        }; 

我收到以下编译错误:

'; expected' and 'Type Expected'

突出显示params关键字。

回答

1

我通过在测试类文件中创建方法并将存根分配给此新方法,找到了解决方法。

[TestMethod()] 
[HostType("Moles")] 
public void NotifyAgentTest() 
{ 
    ... 
    //ensure that the correct values are passed to the agentComm. 
    // have to use a real method because of the parameters param w/ the params keyword. 
    scriptServiceStub.AgentCommStringArray = AgentCommDelegate; 
    ... 
    Assert.IsTrue(agentCommCalled); 

} 

public bool AgentCommDelegate(bool finalizer, params string[] parameters) 
{ 
    agentCommCalled = true; return true; 
} 
1

只需从示例中的委托签名中删除params关键字,它就可以正常工作。

scriptServiceStub.SomeMethodBooleanStringArray= 
      (bool finalizer, string[] parameters) => 
       { 
        agentCommCalled = true; 
       }; 
相关问题