簡體   English   中英

RhinoMocks - 獲取被調用函數的參數

[英]RhinoMocks - Fetching parameters of called functions

使用RhinoMocks - 我可以獲取被調用函數的參數嗎? 我的意思是; 我可以從函數調用中獲取一些未知參數嗎?

我有一個模擬,我希望在此調用一些函數。 我知道其中一個參數,但另一個是未知的,因為它來自使用模擬並調用函數的類。 更具體地說 - 在這種情況下 - 未知參數是lambda函數。 這是一個回調函數,應該在函數執行完畢后調用。 由於模擬阻止調用回調,我想獲取它並自己調用它。

所以; 我想檢查函數是否被調用。 我想確保一些論點是預期的論點。 我希望得出未知的論據,然后對它們進行一些操作。

假設兩個參數都是整數(為簡單起見),我想做這樣的事情:

int unknownInt; 
_fakeSomething.AssertWasCalled(factory => factory.Foo(1, out unknownInt));
// then play around with unknownInt.. 

可以這樣做嗎? 我看到有一個Arg.Out,但是不能讓它工作..

注意:更新了問題,因為它似乎具有誤導性。

Arg<string>.Matches(arg => you got the argument here...);

更新:

要在_fakeSomething上第一次調用Foo方法時獲取第二個參數:

string someArg = null;
var args = _fakeSomething.GetArgumentsForCallsMadeOn(
    x => x.Foo(0, 0), 
    x => x.IgnoreArguments()
);
var int = (int)args[0][1];

不確定是否可以完成,但是這樣的測試會導致不可靠的測試,因為你不知道傳入的實際參數。

如果可能,請測試顯式數據。 如果你f.eks傳入null而不是真值,你的測試可能會因錯誤的原因而傳遞。

使用Arg.Is.Anything進行測試時應該小心,當你真的不關心參數時,例如在AssertWasNotCalled中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM