首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ektron在c#单元测试中的应用

Ektron在c#单元测试中的应用
EN

Stack Overflow用户
提问于 2015-01-15 13:24:08
回答 1查看 201关注 0票数 0

我正在尝试实例化内容API,如下所示

代码语言:javascript
复制
 Ektron.Cms.ContentAPI contentApi = new Ektron.Cms.ContentAPI();

我已经添加了所有必需的参考资料,但我得到了以下错误。

An exception of type 'Microsoft.Practices.Unity.ResolutionFailedException' occurred in Ektron.Cms.ObjectFactory.dll but was not handled in user code Additional information: Resolution of the dependency failed, type = "Ektron.Cms.Settings.ISite", name = "(none)".

EN

回答 1

Stack Overflow用户

发布于 2015-01-15 15:46:54

Ektron所依赖的配置文件相当多。用于解析ISite的此特定错误消息将在ektron.cms.framework.unity.config中解析。

至少可以说,从一个非web项目中使用Ektron是很棘手的。(参考:无法从类库中使用)

这可能是因为您混淆了单元测试和集成测试。以下是一些这样的资源:

由于面向公共的API没有实现接口,所以Ektron代码的单元测试是很困难的。您可以编写位于FrameworkAPI之上的外观,并实现您需要调用的方法。就像这样:

代码语言:javascript
复制
public interface IContentManagerFacade
{
    ContentData GetItem(long id, bool returnMetadata);
}

public class ContentManagerFacade : IContentManagerFacade
{
    public ContentData GetItem(long id, bool returnMetadata)
    {
        var cm = new ContentManager();
        return cm.GetItem(id, returnMetadata);
    }
}

这样,您就可以创建IContentManagerFacade的模拟实现,以便在单元测试中使用。你的门面可以变得复杂到他们需要的程度。如果这是您使用的唯一api方法,那么您就完成了。如果您使用更多的API,那么您的类也会增长。也许您还需要一个TaxonomyManagerFacade或其他什么东西。

如果您真的想从您的测试项目调用Ektron,那么我祝您好运。通过添加所有配置文件并可能引用System.Web,您可以将一些东西拼凑在一起。或者,您可以使用三级dll调用Framework。

最新情况:

虽然我在这里的答案是以FrameworkAPI为例,但同样适用于围绕旧的遗留api类(如ContentAPI类)构建外观。唯一的区别是,我不认为ContentAPI可以作为3层api的一部分。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27964448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档