尝试利用 PublishedContentRequest 方法来执行多个单元测试。由于这是纯粹用于单元测试的单独项目,因此没有 Umbraco 上下文。
只是想知道是否有其他人在以这种方式测试 Umbraco 时遇到问题。确实需要了解它所期望的 uri。例如“contact-us”、“/contact-us”或“http://localhost/contact-us”。还想知道如何正确设置路由上下文。
目前有这样的事情:
private static void SetupControllerContext(UmbracoContext umbCtx, ControllerBase controller)
{
var contextBase = umbCtx.HttpContext;
var pcr = new PublishedContentRequest(new Uri("/contact-us"), umbCtx.RoutingContext);
var routeData = new RouteData();
var routeDefinition = new RouteDefinition
{
PublishedContentRequest = pcr
};
routeData.DataTokens.Add("umbraco-route-def", routeDefinition);
controller.ControllerContext = new ControllerContext(contextBase, routeData, controller);
}
任何指针都会很棒。
谢谢
最佳答案
基本上有两种选择。您可以自己设置和模拟 Umbraco,或者您可以从 Github 获取 Umbraco 源代码并构建项目并使用他们的 Umbraco.Tests 帮助程序库,使得模拟和设置 Umbraco 部件非常容易,足以进行单元测试。
实际上有两篇关于这个主题的好文章。
对于深入的、自己的观点,这是一篇很好的帖子和教程:
单元测试 Umbraco - 合理
http://skrift.io/articles/archive/unit-testing-umbraco-plausible/
有关自行部署的提示,以及有关如何使用 Umbraco.Tests 库的更多信息,请查看这篇文章:
http://blog.aabech.no/archive/the-basics-of-unit-testing-umbraco/
两者都在 Github 上提供了源代码,因此您可以自己尝试他们的技术。
就我个人而言,我正在研究这个问题,并决定采用 Umbraco.Tests 库方法。然而,我真的希望有一个 Nuget 存储库,我可以确保测试库与我的 Umbraco nuget 包同步。
关于c# - Umbraco 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761494/