Nil*_*Pun 5 sitecore sitecore6
我见过很少的示例sitecore应用程序,它们在业务逻辑中使用以下代码:
Database database = Factory.GetDatabase(itemUri.DatabaseName);
Assert.IsNotNull(database, itemUri.DatabaseName);
return database.GetItem(attribute);
Run Code Online (Sandbox Code Playgroud)
有人可以澄清这是否是sitecore惯例.我只使用Assert进行单元测试场景,但不使用逻辑.
谢谢.
我发现这篇文章解决了你的大部分问题.有几个要点:
我认为值得注意的是,我似乎在Sitecore博客中发现的许多示例都是无论如何会发生异常的情况.因此,如果ArgumentIsNotNull要省略,例如,这将导致a NullObjectException,所以Assert实际上清理了一些东西.在您的情况下,如果数据库不可用,这也会导致问题.Assert使得错误的原因很明显.
这是一个惯例,可以看到在sitecore.dll中使用heviliy.如果不满足该条件,它将用于抛出异常.
例如,如果查看Assert.IsTrue,如果不满足条件,系统将抛出"InvalidOperationException"
从搜索API反编译方法我发现了这一点.
Assert.IsTrue(local_0 != null, "SearchConfiguration is missing");
Run Code Online (Sandbox Code Playgroud)
然后,如果我们解编译IsTrue,它就会给我们
[AssertionMethod]
public static void IsTrue([AssertionCondition(AssertionConditionType.IS_TRUE)] bool condition, string message)
{
if (!condition)
throw new InvalidOperationException(message);
}
Run Code Online (Sandbox Code Playgroud)
要回答您的其他问题,您可以在应用程序代码中使用它,因为您可以看到它只是在不满足条件时抛出异常的另一种方法.
使用assert这个词会引起混淆,正如你所说的那样,通常在传统的c#.NET解决方案的单元测试环境中看到.只要您知道Sitecore声明在幕后做了什么,如果您想要使用它,它取决于您.
| 归档时间: |
|
| 查看次数: |
926 次 |
| 最近记录: |