一個void方法返回一個值,如何使用模擬回調如何從使用模擬設置
在我的單元測試我都嘲笑來電DB寫入調用方法的無效方法返回一個值。這種方法是無效類型,但對於我的測試斷言,我需要驗證傳遞給此方法的參數之一。 有沒有辦法在模擬設置上返回這個參數?
這是我的代碼。
public virtual void InsertOrUpdateBrewedEntity(RawDataLeaf theRawData, //this parameter i want to check for assertion
XsdInfo allXsdInfo = null,
DbWritingActionCode actionCode = DbWritingActionCode.I,
Dictionary<string, string> dataIdMap = null,
Action<string, RawDataLeaf> testActionToDoInsteadOfWriting = null,
string transactionName = null,
bool skipValidationEvenForTypesThatCantSaveIfNotValid = false,
bool disableExtraSqlForXsdType = false,
string nameOverride = null)
{
//code
}
所以我想在模擬方法設置上獲得RawDataLeaf的RawDataLeaf的值。
這裏是我如何設置這個模擬方法調用。
_xmlCupboardWriteAccess.Setup(x => x.InsertOrUpdateBrewedEntity(It.IsAny<RawDataLeaf>(),
It.IsAny<XsdInfo>(),
It.IsAny<DbWritingActionCode>(),
It.IsAny<Dictionary<string, string>>(),
It.IsAny<Action<string, RawDataLeaf>>(),
It.IsAny<string>(),
It.IsAny<bool>(),
It.IsAny<bool>(),
It.IsAny<string>()));
你不能從void返回數據,這就是它的意思。你也許可以使用out(http://msdn.microsoft.com/en-us/library/t3c3bfhx.aspx)關鍵字。 – Bonzo
@Bonzo我寧願有一個解決方案,不需要我改變我嘲笑的方法的簽名。作爲質量保證,我被允許編寫測試,但不能更改實施的代碼。但是,謝謝你的建議。 –