我正在为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()的情况下获取提交的数据?或者一种正确伪造回购的方式(希望不是我在文档中简单查看过的东西)。
答案 0 :(得分:2)
在测试套件的设置方法中,您可以设置组件管理器 HstServices.setComponentManager(的ComponentManager) 确保componentmanager是一个模拟器。现在你可以控制它返回的内容了。这可能需要一些嘲弄,这是不幸的。
确保在拆解时将组件管理器设置为null,因为它是一个静态类,并且可能会导致同一套件中的测试出现问题。