java - 模拟/伪造存储库(或在没有 persistFormMap 的情况下填充 FormMap)

标签 java unit-testing hippocms

我正在为 HippoCMS 组件编写单元测试,但是我无法解决如何伪造 Repository 对象来模拟 persistFormMap 数据的问题。

我遵循基本的 HST-2 表单建议来实际检索请求数据( http://www.onehippo.org/library/concepts/component-development/hst-2-forms.html ),但是我还没有找到一种简单的方法来模拟/伪造 getWritableSession 的存储库部分(从 persistFormMap() 调用)放入一个假组件管理器中。

public static Session getWritableSession() 抛出 RepositoryException { 如果(HstServices.isAvailable()){ 凭证defaultCredentials = HstServices.getComponentManager().getComponent(Credentials.class.getName() + ".writable"); 存储库repository = HstServices.getComponentManager().getComponent(Repository.class.getName()); session session =空; if (存储库!= null) { if (defaultCredentials != null) { session =repository.login(defaultCredentials); } 别的 { session =存储库.登录(); } } 返回 session ; }

有没有一种方法可以不使用 persistFormMap() 来获取提交的数据?或者一种正确伪造存储库的方法(希望不是我在文档中简单查看的内容)。

最佳答案

在测试套件的设置方法中,您可以设置组件管理器 HstServices.setComponentManager(componentManager) 确保 componentmanager 是一个模拟。现在您可以控制它返回的内容。这可能需要一些 mock ,这是不幸的。

确保在拆卸中将组件管理器设置为 null,因为它是静态类,可能会导致同一套件中的测试出现问题。

关于java - 模拟/伪造存储库(或在没有 persistFormMap 的情况下填充 FormMap),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26163732/

相关文章:

java - Roo 1.1.5 super 基本应用程序有问题

java - 我怎样才能让这个程序以不同的方式显示计数器?

java - 单元测试架构问题

java - 将泛型与 Mockito 匹配

content-management-system - 使用rest api在hippo cms中创建用户

java - 如何对列表进行排序,并在末尾添加另一个列表中的数据?

java - 如何处理重复的 block

unit-testing - Robolectric 单元测试仅在运行多模块单元测试运行配置时使用旧资源而不是二进制资源

java - Hippo CMS 的漂亮网址

SEO 插件在 Hippo CMS 中不起作用