我有一个电话我希望检查已发生。这个调用是一个将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))