FakeDB ile, TargetItem değerini DbLinkField'da nasıl ayarlayabilirim?Sitecore ve FakeDB ile, LookupField TargetItem öğesini nasıl ayarlayabilirsiniz?
Ayar: Diğer öğeler listesine işaret eden bir droplist içeren bir veri şablonum var.
public static Item Lookup(this Item item, string fieldName)
{
if (item == null) throw new ArgumentNullException("item");
LookupField field = item.Fields[fieldName];
if (field == null) return null;
return field.TargetItem;
}
Ünite Testi ve Sonucu:
Bir Sitecore Ürün uzantısı yöntemine sahip benim kurallarına aykırı Aşağıdaki basit bir test çalıştırdığınızda LookupItem bir alan olarak bulunursa, ancak ortaya çıkan LookupItem vardır null TargetItem. Bir şekilde FakeDB kullanarak bunu yapmak mümkün mü?[Test]
public void TestLookupItemExtension()
{
ID templateId = ID.NewID;
ID refItemId = ID.NewID;
using (var db = new Db()
{
new DbTemplate("ItemTpl", templateId) { "Foo" },
new DbItem("RefItem", refItemId),
new DbItem("ItemComponent", ID.NewID, templateId)
{
new DbLinkField("Foo") { TargetID = refItemId }
}
})
{
var item = db.GetItem("/sitecore/content/itemcomponent");
var lookupItem = item.Lookup("Foo");
lookupItem.Should().NotBeNull();
}
}
targetitem içinde alanının sonucu şu şekildedir:
field {Sitecore.Data.Fields.LookupField} Sitecore.Data.Fields.LookupField
+ InnerField "Foo"-{{C906FD3D-C5DA-4191-8F0A-F15603FB897E}} Sitecore.Data.Fields.Field
+ TargetID {{00000000-0000-0000-0000-000000000000}} Sitecore.Data.ID
+ TargetItem null Sitecore.Data.Items.Item
Value "<link />" string
+ _innerField "Foo"-{{C906FD3D-C5DA-4191-8F0A-F15603FB897E}} Sitecore.Data.Fields.Field
Yani LookupField doğru alıyorum, ama aslında ortaya çıkan LookupField sahte nesnesine targetid veya TargetItem koyarak asla .
Herhangi bir fikir takdir edilecektir. Eğer (item == null) yeni argüman atarsa
Fantastik - beklendiği gibi çalışıyor. Cevap için teşekkürler. – rcurts