[rules-users] Isn't it possible to mock a global with e.g. Mockito or EasyMock
dhermanns
d.hermanns at lvm.de
Mon Feb 7 04:47:39 EST 2011
Hi everybody,
i'm trying to mock a global using Mockito but Drools is always complaining:
Caused by: java.lang.ClassCastException:
de.lvm.verteilung.monitoring.VerteilungServicesMonitoringMBean$$EnhancerByMockitoWithCGLIB$$df2ff492
incompatible with
de.lvm.vorverteilung.monitoring.VorverteilungServicesMonitoringMBean
at
ServiceProzesse.Verteilung.Vertreterregeln.Rule_Vertretung_nach_Endnummer_0DefaultConsequenceInvoker.evaluate(Rule_Vertretung_nach_Endnummer_0DefaultConsequenceInvoker.java:22)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:917)
... 31 more
It seems that it has problems with the created subclass from Mockito. I get
the same
ClassCastException when trying this with EasyMock.
Here is my Unit-Test:
KnowledgeBase knowledgeBase = createKnowledgeBase();
StatelessKnowledgeSession ksession =
knowledgeBase.newStatelessKnowledgeSession();
VerteilungServicesMonitoringMBean monitoring =
mock(VerteilungServicesMonitoringMBean.class);
Arbeitsanstoss arbeitsanstoss = new ArbeitsanstossImpl();
arbeitsanstoss.setBenutzerId("m500516");
VerteilSperreController verteilSperreService =
mock(VerteilSperreController.class);
when(verteilSperreService.istVerteilSperreAktiv("m500516",
Ausgangskanal.LAS_BRIEFKASTEN)).thenReturn(true);
ksession.setGlobal("monitoring", monitoring);
ksession.setGlobal("verteilSperreService", verteilSperreService);
ksession.execute(arbeitsanstoss);
And my drl:
package ServiceProzesse.Verteilung.Vertreterregeln
import de.lvm.vorverteilung.services.types.SystemseitigerAnstoss;
import de.lvm.vorverteilung.services.types.Arbeitsanstoss;
import de.lvm.vorverteilung.monitoring.VorverteilungServicesMonitoringMBean;
import de.lvm.verteilung.sperre.VerteilSperreController;
import de.lvm.verteilung.sperre.Ausgangskanal;
global VorverteilungServicesMonitoringMBean monitoring;
global VerteilSperreController verteilSperreService;
rule "Vertretung nach Endnummer"
when
$a : Arbeitsanstoss()
eval( verteilSperreService.istVerteilSperreAktiv($a.getBenutzerId(),
Ausgangskanal.LAS_BRIEFKASTEN) )
then
monitoring.log("Vertretung nach Endnummer");
System.out.println("hello2");
end
Any ideas?
Thanks in advance,
Dirk
--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Isn-t-it-possible-to-mock-a-global-with-e-g-Mockito-or-EasyMock-tp2442072p2442072.html
Sent from the Drools - User mailing list archive at Nabble.com.
More information about the rules-users
mailing list