2011-06-22 78 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; 
       }; 
相關問題