2017-06-06 1 views
0

Je suis en train de créer des tests unitaires à l'aide sitecoreFakeDB mon code affiche ci-dessous:Contexte de rendu de test unitaire. contexte Page jette une exception

using (Sitecore.FakeDb.Db db = new Sitecore.FakeDb.Db() { new Sitecore.FakeDb.DbItem("source") }) 
     { 
      var contextItem = db.GetItem("/sitecore/content/source"); 
      var args = new Sitecore.Pipelines.PipelineArgs(); 
      using (RenderingContext.EnterContext(new Rendering(), contextItem)) 
      { 

       var processor = new Mock<Sitecore.FakeDb.Pipelines.IPipelineProcessor>(); 

       db.PipelineWatcher.Register("mypipeline", processor.Object); 

       Sitecore.Pipelines.CorePipeline.Run("mypipeline", args); 

       Xunit.Assert.NotNull(args.Current)); 
      } 
     } 

lors de la vérification de la pageContext dans le RenderingContext.Current il jette une exception. Comment puis-je avoir une valeur pour le pagecontext? enter image description here

Répondre

1

Il semble qu'il n'y ait pas de méthode PageContext.EnterContext similaire à celle utilisée pour entrer dans le contexte de rendu. Vous pouvez le définir manuellement via la classe statique ContextService (mais attention à la poubelle possible si vous ne le nettoierez pas correctement):

ContextService.Get().Push(new PageContext()); 
var currentContext = RenderingContext.Current; 
Assert.NotNull(currentContext.PageContext); // pass