我第一次使用Lambda表達式並試圖瞭解如何執行此操作。我遵循這個測試文件中已經存在的模式,但是我的調用有一個額外的複雜層,因爲我需要查看每個對象的內部以選擇所有具有將在測試。使用Lambda表達式查找具有匹配標識的所有對象
myobject.cs
public class myObject
{
public myObject()
{
this.id = Guid.Empty;
this.poolId = Guid.Empty;
this.name = string.Empty;
this.URL = string.Empty;
}
public Guid id { get; set; }
public Guid poolId { get; set; }
public string name { get; set; }
public string URL { get; set; }
}
testfile.cs
Mock<IMyObjectRepository> mock = new Mock<IMyObjectRepository>(MockBehavior.Strict);
List<myObject> objects = new List<myObject>();
mock.Setup(r => r.LoadByPoolId(It.IsAny<Guid>()))
.Returns<IEnumerable<myObject>>(objList => objects.Where(obj => objList.Contains(obj.id));
的問題是,這只是搜索表面水平的對象,它不搜索對象的屬性。我錯過了選擇所有myObjects
與匹配的ID?
的倉庫接口
public interface IMyObjectRepository
{
void Put(myObject object)
void Delete(Guid appId);
myObject Load(Guid appId)
IEnumerable<myObject> LoadByPoolId(Guid poolId);
}
顯示被模擬的類/接口的定義。從您當前的代碼中,我們仍然猜測它是什麼。提供一個可用於重現問題的[mcve]。 – Nkosi
我沒有包括它,因爲我真的不認爲這會有所幫助,但是你去了! – jlee