2017-08-02 3 views
2

Wie erstellen Sie ein Layout-Feld mit Sitecore Fakedb? Ich habe den Code unten, aber es funktioniert nicht.Wie erstellt man ein Layoutfeld in sitecorefakedb?

Der Code unten wirft einen Fehler "der Artikel ist kein Layout/Rendering-Feld"

var template = new Sitecore.FakeDb.DbTemplate("themes", Templates.SiteTheme.ID); 

       var home = new Sitecore.FakeDb.DbItem("home", new Sitecore.Data.ID());     

       var lookUpField = new Sitecore.FakeDb.DbField("link", Templates.SiteTheme.Fields.SiteTheme) { 
        Type = "Rendering" 
       }; 

       lookUpField.Value = home.ID.ToString(); 

       var site = new Sitecore.FakeDb.DbItem("site", new Sitecore.Data.ID(), Theming.Templates.SiteTheme.ID) { 
        lookUpField 
       };   

       home.Add(site); 

       db.Add(home);     

       var themesItem = db.GetItem("/sitecore/content/home/site"); 

       var layout = new LayoutField(themesItem.Fields["link"]); 

       var value = layout.Value; 

       Xunit.Assert.NotNull(value); 

Antwort

2

So etwas:

[TestCase] 
public void FooLayout() 
{ 
    // arrange 
    var itemId = ID.NewID; 
    using (var db = new Db 
    { 
     new DbItem("Some Item", itemId) 
     { 
      new DbField(Sitecore.FieldIDs.LayoutField) { Value = "{presentation-xml}" } 
     } 
    }) 
    { 
     var item = db.GetItem(itemId); 
     // act 
     // assert 
     item[Sitecore.FieldIDs.LayoutField].Should().Be("{presentation-xml}"); 
    } 
} 

. Hinweis: Sollte()() sein Methoden kommen von https://www.nuget.org/packages/FluentAssertions/