2012-07-19 54 views
14

我有一個使用輸出參數的函數。我怎樣才能嘲笑這個功能?嘲笑使用輸出參數的函數

我的功能是:

GetProperties(out string name, out string path, out string extension); 

在我的原代碼,我這樣做:

string Name; 
string Path; 
string Extension; 
MyObject.GetProperties(out Name, out Path, out Extension); 

現在,我怎麼能嘲笑嗎?

+1

類似的問題http://stackoverflow.com/questions/1068095/assigning-out-ref-parameters-in-moq – Alex 2012-07-19 07:37:39

+0

沒有得到它,你可以寫我的代碼,嘲笑函數返回一個字符串很簡單, mockObject.Setup(f => f.SomeMethod())。Returns(「string」); 但不知道輸出參數, – 2012-07-19 07:40:10

回答

20

你應該調用這樣的方法之前調出變量的值:

string Name = "name"; 
string Path = "path"; 
string Extension = "extension"; 
mock.Setup(item => item.GetProperties(out Name, out Path, out Extension)) 
    .Returns(someReturnValue); 

雖然我寧願在你的返回類型返回而不是用那麼多出來的參數這些值。

+0

函數是用C++編寫的COM對象,所以這就是爲什麼有這麼多的輸出參數,我認爲CallBack可以用在這個,但不知道如何, – 2012-07-19 07:46:09

+0

如果你必須嘲笑輸出參數的返回值,它應該可以正常工作,你不需要回調。 – 2012-07-19 07:58:04

+0

是的,我按照你說的做,它工作正常, – 2012-07-19 07:58:51