有没有办法测试依赖 umbraco 的代码。即在我的模型中,我正在调用 getNode 或使用 uquery 来获取节点,但我无法测试这些类,因为它们依赖于 umbraco ...
我想解决这个问题的一种方法是模拟,但你怎么能模拟 uquery 或 nodefactory?
有没有办法测试依赖 umbraco 的代码。即在我的模型中,我正在调用 getNode 或使用 uquery 来获取节点,但我无法测试这些类,因为它们依赖于 umbraco ...
我想解决这个问题的一种方法是模拟,但你怎么能模拟 uquery 或 nodefactory?
我不相信 CMS 系统自然适合单元测试,因为输出并不总是像业务逻辑应有的那样枯燥无味。
但是(总是有一个但是)你可以模拟节点的生成——至少操纵它们并检查错误。一个示例单元测试是创建一个包含一些必填字段和一些可选字段的文档类型 - 然后仅在将可选字段设为必填之前用必填字段填充内容节点 - 这应该会出错。不过,我认为您不能通过代码强制添加属性。
(另请参阅: 如何从代码向 Umbraco 中的文档类型添加属性? http: //our.umbraco.org/wiki/reference/api-cheatsheet/creating-a-document http://our.umbraco.org /wiki/how-tos/working-with-document-types )
就像是:
var alias = "aliasOfOptionalField";
var value = string.Empty;
var docType = "Textpage";
DocumentType dt = DocumentType.GetByAlias(docType);
User author = User.GetUser(0);
Document doc = Document.MakeNew("My new document", dt, author, 1018);
doc.Publish(author);
umbraco.library.UpdateDocumentCache(doc.Id);
var newProperty = dt.AddPropertyType(new DataTypeDefinition(-49), alias, "test prop");
if (doc.HasProperty(alias))
{
doc.getProperty(alias).Value = value;
doc.Publish(new User(0));
library.UpdateDocumentCache(doc.Id);
}