在 EpiServer CMS 中进行单元测试的最佳方法
Best things to unit test in EpiServer CMS
我马上就知道这是一个很复杂的问题,可能有很多想法,但我很难在网上找到 EPIServer 中单元测试的典型示例。
我认为一个好的开始是,如果有人有在测试环境中进行单元测试和 TDD 的经验,那可能会让我们有所收获。我不熟悉 CMS 类型的块和页面类型等单元测试。所以我试图获得一些指导。
谢谢
一个典型的例子是您使用 IContentLoader
.
获取的内容
假设您使用以下代码获取主菜单项:
var items = _contentLoader.GetChildren<PageData>(ContentReference.StartPage)
... // filtering
.ToList();
您显然需要过滤掉容器页面、受限页面、未发布页面、VisibleInMenu
设置为 False
的页面等
要对其进行单元测试,您需要模拟 IServiceLocator
、IContentLoader
、ITemplateResolver
、IPublishedStateAssessor
等
除 https://github.com/DavidVujic/EPiServer-FakeMaker
外,我还没有找到 Episerver 的任何开源 mocking/testing 框架
大多数对 Episerver 解决方案进行单元测试的公司都开发了自己的框架,这些框架未公开提供。 David 的 FakeMaker 是一个好的开始。
我马上就知道这是一个很复杂的问题,可能有很多想法,但我很难在网上找到 EPIServer 中单元测试的典型示例。
我认为一个好的开始是,如果有人有在测试环境中进行单元测试和 TDD 的经验,那可能会让我们有所收获。我不熟悉 CMS 类型的块和页面类型等单元测试。所以我试图获得一些指导。
谢谢
一个典型的例子是您使用 IContentLoader
.
获取的内容
假设您使用以下代码获取主菜单项:
var items = _contentLoader.GetChildren<PageData>(ContentReference.StartPage)
... // filtering
.ToList();
您显然需要过滤掉容器页面、受限页面、未发布页面、VisibleInMenu
设置为 False
的页面等
要对其进行单元测试,您需要模拟 IServiceLocator
、IContentLoader
、ITemplateResolver
、IPublishedStateAssessor
等
除 https://github.com/DavidVujic/EPiServer-FakeMaker
外,我还没有找到 Episerver 的任何开源 mocking/testing 框架大多数对 Episerver 解决方案进行单元测试的公司都开发了自己的框架,这些框架未公开提供。 David 的 FakeMaker 是一个好的开始。