您可能不需要FakeDb來設置渲染上下文。作爲@gorhal有mentioned,你應該使用RenderingContext.EnterContext()
方法:
[Fact]
public void EnteringSimpleRenderingContext()
{
using (RenderingContext.EnterContext(new Rendering()))
{
Assert.NotNull(RenderingContext.Current);
}
}
如果您需要一些數據源,您可以使用創建一個項目不是純粹的FakeDb
[Fact]
public void EnteringRenderingContextWithDataSource()
{
using (var db = new Db { new DbItem("source") })
{
var contextItem = db.GetItem("/sitecore/content/source");
using (RenderingContext.EnterContext(new Rendering(), contextItem))
{
Assert.NotNull(RenderingContext.Current);
Assert.NotNull(RenderingContext.Current.ContextItem);
}
}
}
或FakeDb integrated與AutoFixture :
[Theory, AutoDbData]
public void EnteringRenderingContextWithAutoDataSource(Item contextItem)
{
using (RenderingContext.EnterContext(new Rendering(), contextItem))
{
Assert.NotNull(RenderingContext.Current);
Assert.NotNull(RenderingContext.Current.ContextItem);
}
}
internal class AutoDbDataAttribute : AutoDataAttribute
{
public AutoDbDataAttribute()
: base(new Fixture().Customize(
new Sitecore.FakeDb.AutoFixture.AutoDbCustomization()))
{
}
}
不這麼認爲。項目,安全性,管道和設置似乎是極限。 –