umbraco に依存するコードをテストする方法はありますか。つまり、モデル内で getNode を呼び出すか、uquery を使用してノードを取得していますが、umbraco に依存しているため、これらのクラスをテストできません...
この問題を解決する 1 つの方法はモックすることだと思いますが、どのように uquery や nodefactory をモックできますか?
umbraco に依存するコードをテストする方法はありますか。つまり、モデル内で getNode を呼び出すか、uquery を使用してノードを取得していますが、umbraco に依存しているため、これらのクラスをテストできません...
この問題を解決する 1 つの方法はモックすることだと思いますが、どのように uquery や nodefactory をモックできますか?
CMSシステムがユニットテストに自然に適しているとは思いません。出力がビジネスロジックのようにカットされて乾燥しているとは限らないからです。
しかし(常にありますが)ノードの生成をモックすることができます-それらを操作し、少なくともエラーをチェックします。単体テストの例の1つは、いくつかの必須フィールドといくつかのオプションフィールドを使用してドキュメントタイプを作成し、コンテンツノードに必須フィールドを入力してからオプションフィールドを必須にすることです。これによりエラーが発生します。ただし、コードを介してプロパティを必須として追加することはできないと思います。
(参照: コードから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);
}