我们一直在使用 codeflood 测试我们的 Sitecore 代码,但希望做更多的事情来自动化我们对本地和 CI 构建的测试。我一直在关注 Mike Edwards 提出的关于如何使用 NUNIT 运行 Sitecore 测试的解决方案 -
后来,Dan Solovay 发表了一些关于如何改进的想法——
到目前为止,这在视觉工作室构建中效果很好。配置从 Sitecore 网站复制到测试项目,NUNIT 可以执行从 Sitecore 检索项目的测试,所有这些都没有上下文。
我的问题 - 我们使用 Glass Mapper 来处理这样的事情:
Database database = global::Sitecore.Configuration.Factory.GetDatabase("master");
ISitecoreService SitecoreService = new SitecoreService(database);
var catalogItem = database.GetItem([guid to our item]);
Assert.IsNotNull(catalogItem);
var catalog = SitecoreService.CreateType<ProductCatalog>(catalogItem, true, true);
Assert.NotNull(catalog);
Assert other things on our ProductCatalog class...
问题似乎是 Glass Mapper 的 SitecoreService 构造函数需要一个上下文,如果没有,它使用“默认”。由于我们在 NUNIT 中执行,因此没有上下文,并且 Sitecore 服务的创建失败。
我怀疑有一个明确的答案可以解决这个问题,但我会对任何人的想法感兴趣。
如果没有 Sitecore 上下文,也许无法在测试中使用 Glass Mapper。另一方面,我绝不是 Glass 专家——也许有不同的方法可以在测试中映射我的班级?