我有一個電話我希望檢查已發生。這個調用是一個將Linq表達式作爲參數的方法。這個表達式測試了一個對象id和聲明表達式的局部變量的id。我怎樣才能讓一個假的簡單的調用,只有當Linq表達式相等時(用局部變量替換)或者當linq表達式中使用的局部變量等於某個值時觸發纔是可能的。如何等待以特定linq表達式作爲參數的呼叫
我當前的代碼看起來像這樣
A.CallTo(() => SomeMethod.FindBy(item=> item.ItemId == 3)).MustHaveHappened(Repeated.Exactly.Once);
由於調用,這在代碼中進行測試。
SomeMethod.FindBy(item=> item.ItemId == id)
其中id是局部變量。這不起作用,因爲在進行調用時id不會被替換,並且我得到這樣的錯誤。
SomeInterface`1[[someItem, someItemFolder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].FindBy(item=> (item.ItemId == 3))
Expected to find it exactly once but found it #0 times among the calls:
1: SomeInterface`1[UKHO.WeeklyRecipes.EFModels.EFModels.EfTag].FindBy(predicate: tag => (tag.TagId == value(UKHO.WeeklyRecipes.BusinessLayer.PreferenceQueries+<>c__DisplayClass2_0).id))