模拟/伪造存储库(或填充没有persistFormMap的FormMap)

时间:2014-10-02 15:02:17

标签: java unit-testing hippocms

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

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

public static Session getWritableSession() throws RepositoryException { if (HstServices.isAvailable()) { Credentials defaultCredentials = HstServices.getComponentManager().getComponent(Credentials.class.getName() + ".writable"); Repository repository = HstServices.getComponentManager().getComponent(Repository.class.getName()); Session session = null; if (repository != null) { if (defaultCredentials != null) { session = repository.login(defaultCredentials); } else { session = repository.login(); } } return session; }

有没有办法在没有persistFormMap()的情况下获取提交的数据?或者一种正确伪造回购的方式(希望不是我在文档中简单查看过的东西)。

1 个答案:

答案 0 :(得分:2)

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

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