Unit testing 单元测试epserver扩展

Unit testing 单元测试epserver扩展,unit-testing,c#-4.0,episerver-6-r2,Unit Testing,C# 4.0,Episerver 6 R2,在EPiServer中,人们如何测试这样的扩展: } 我得到 你是如何做到这一点的?你应该依靠abastractions而不是它的实现(你应该在DataFactory上面有一些facade类)。请看一下 public static class LinkItemExtensions { public static T GetTypedPage(this LinkItem link) where T : TypedPageData {

在EPiServer中,人们如何测试这样的扩展:

}

我得到


你是如何做到这一点的?

你应该依靠abastractions而不是它的实现(你应该在DataFactory上面有一些facade类)。请看一下


public static class LinkItemExtensions
    {
        public static T GetTypedPage(this LinkItem link) where T : TypedPageData
        {
            return (T) DataFactory.Instance.GetPage(PageReference.ParseUrl(link.Href));
        }
    }

[TestFixture]
public class LinkItemExtensionsTests
    {
        [Test]
        public void GetTypedPage_GivenALinkItem_ReturnsTypedPageData()
        {
            var link = new LinkItem();
            var typedPage = link.GetTypedPage();
            Assert.IsAssignableFrom(typeof(StartPageData), typedPage);
        }
    }

namespace WebTests
{
    [TestFixture]
    public class PageDataExtensionsTests
    {
        [Test]
        public void GetTypedPage_GivenALinkItem_ReturnsTypedPageData()
        {
            var link = new LinkItem();

        var startPage = A.Fake<StartPageData>();

        var pageDataFactory = A.Fake<IDataFactoryFacade>();

        A.CallTo(() => pageDataFactory.GetPage(null))
            .WithAnyArguments()
            .Returns(startPage);

        var typedPage = link.GetTypedPage<StartPageData>(pageDataFactory);

        Assert.IsAssignableFrom(typeof(StartPageData), typedPage);

    }

}
System.InvalidCastException : Unable to cast object of type 'Castle.Proxies.PageDataProxy' to type 'LocalEPiSandbox.Templates.PageTypes.StartPageData'.