FakeDBでは、DbLinkFieldでTargetItemの値を設定するにはどうすればよいですか?SitecoreとFakeDBでは、どのようにLookupField TargetItemを設定できますか?
セットアップ: 私は他のアイテムのリストを指すドロップリストを持つデータテンプレートを持っています。
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;
}
ユニットテストと結果:
私は、サイトコアアイテム拡張メソッド持って、私は自分のコードに対して、以下の簡単なテストを実行すると LookupItemがフィールドとして発見されたのが、結果LookupItemがありnullのTargetItem何とかFakeDBを使って模擬することは可能ですか? targetitemで[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();
}
}
フィールドの結果は次のようになります。
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
だから私はLookupFieldが正しい取得していますが、それは実際に結果LookupFieldモックオブジェクトにターゲットIDまたはTargetItemを入れたことがないです。
すべてのアイデアをいただければ幸いです。
Fantastic - 期待通りに動作します。ありがとうございます。 – rcurts