Я сталкиваюсь с этими странными проблемами при тестировании одной из моих услуг ... Я издеваюсь над двумя службами с easymock 3.0 и впрыскиваю их с помощью Spring, но я получаю «java.lang.IllegalArgumentException: Не один из них: $ Proxy43 "исключение в одном из них. Я объявляя их так же, как в моем файле конфигурации, например:Easy mock не распознает насмешливое обслуживание
<bean id="recurringSchedulesJobsService" class="org.easymock.EasyMock" factory-method="createMock">
<constructor-arg value="com.spmsoftware.recurringschedules.service.RecurringSchedulesJobsService"/>
</bean>
<bean id="jobPeriodService" class="org.easymock.EasyMock" factory-method="createMock">
<constructor-arg value="com.spmsoftware.jobdefinition.service.JobPeriodService"/>
</bean>
В моих тестах JUnit, я буду их помощь на следующих путях:
@Autowired
private RecurringSchedulesJobsService recurringSchedulesJobsService;
@Autowired
private JobPeriodService jobPeriodService;
@Before
public void setUp() throws Exception {
reset(recurringSchedulesJobsService);
expect(recurringSchedulesJobsService.getBasedOnRecurringScheduleId(RECURRING_SCHEDULE_ID)).andReturn(buildRecurringScheduleJob());
replay(recurringSchedulesJobsService);
reset(jobPeriodService);
expect(jobPeriodService.findPeriodByJobId(RECURRING_SCHEDULE_JOB_ID)).andReturn(buildJobDefinitionPeriod());
replay(jobPeriodService);
}
recurringSchedulesJobsService получает высмеивали и когда я комментарий второй службы, он ведет себя так, как ожидалось. jobPeriodService, с другой стороны, не признается как макет. Вместо этого я получаю это исключение:
java.lang.IllegalArgumentException: Not a mock: $Proxy43
at org.easymock.internal.ClassExtensionHelper.getControl(ClassExtensionHelper.java:66)
at org.easymock.EasyMock.getControl(EasyMock.java:2068)
at org.easymock.EasyMock.reset(EasyMock.java:1983)
at com.spmsoftware.recurringschedules.occurrences.generator.OccurrenceGeneratorTest.setUp(OccurrenceGeneratorTest.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
Исключение брошено только быть метод сброса(), хотя ...
Одна интересная вещь, я обнаружил, что два объекта не одного и того же экземпляра. Это то, что я получаю при отладке:
Любые идеи о том, что это будет очень ценным. Thanks
Являются ли оба повторяющихся интерфейсаSubsulesJobsService и jobPeriodService интерфейсами? – SantoshK
Да, они ... – sebi