2011-09-15 45 views
1

我擁有包含看起來像一個成員的接口參數的屬性:如何更新使用FakeItEasy

void ExecuteSqlCommand(string procedureName, SqlParameter[] parameters); 

我使用FakeItEasy創建的這一個模擬傳遞給我的課之一。

我正在測試的代碼調用此方法,然後檢查其中一個SqlParameters的值。如何在調用方法時使用FakeItEasy設置此參數的Value屬性?

我明白,這可能不是從數據庫中獲取單個信息的最佳實踐,但我正在使用現有的存儲過程,其中一些存儲過程具有OUT參數。

+0

我與代碼中創建它: 'VAR假= A.Fake ();' 有什麼我可以在此使用: A.CallTo(()=> fake.ExecuteSqlCommand(A .Ignored,A 。Ignored))。 。 。' ?? –

回答

3

正如您所說,這可能不是最佳實踐。這且不說,我想你可以做這樣的事情:

A.CallTo(() => fake.ExecuteSqlCommand(A<string>._, A<SqlParameter[]>._)).Invokes(x => 
{ 
    x.GetArgument<SqlParameter[]>(1)[indexOfTheParameterYouWantToSet].Value = yourValue; 
}); 
+0

Patrik,謝謝你這麼快的迴應 - 這正是我所需要的。 –