Okay, so what's the easiest way to replace a single bean with a mock?
I tried Springockito's @ReplaceWithMock w/o any luck.
My webapp in testing is configured as follows:
public class BaseConsoleTest extends SpringTest {
...
ConsoleApplication testConsoleApplication = new
ConsoleApplication() {
@Override
public ServletContext getServletContext() {
ServletContext servletContext =
super.getServletContext();
XmlWebApplicationContext wctx = new
XmlWebApplicationContext();
wctx.setParent(getSpringApplicationContext());
wctx.setConfigLocation("");
wctx.setServletContext(servletContext);
wctx.refresh();
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTE
XT_ATTRIBUTE, wctx);
return servletContext;
}
@Override
protected void onDestroy() {
super.onDestroy();
if(tester != null) {
tester.destroy();
tester = null;
}
}
@Override
public Class<? extends Page> getHomePage() {
Class<? extends Page> testHomePage =
super.getHomePage();
return (testHomePage == null) ? MyDummyPage.class :
testHomePage;
}
};
...
}
This class extended:
@ContextConfiguration(loader = SpringockitoContextLoader.class, locations =
{"classpath:applicationContext.xml"})
@TransactionConfiguration(defaultRollback = true)
@Transactional
public abstract class SpringTest extends
AbstractTransactionalTestNGSpringContextTests {
// Setup data sources
}
Simply enough I just want to mock and inject the new mock by replacing a
single DAO defined in my applicationContext.xml.
The test I've tried:
@Test
public class GroupingBaseTestPage extends BaseConsoleTest {
...
@ReplaceWithMock
@Autowired
private DictionaryGroupingDao dictionaryGroupingDao;
...
}
Now each time I tried to define a mock for dictionaryGroupingDao the real
bean is called instead:
when(dictionaryGroupingDao.countAvaialbleItems(Mockito.<DictionaryGroupingQu
eryParams>any())
).thenReturn(
getCount()
);
The above dictionaryGroupingDao.countAvaialbleItems() executes on the real
bean as if @ReplaceWithMock never did its work.
I've tried with regular Mockito via the @Mock and that mocks my bean but it
doesn't inject it into my Wicket's app :(
Right now I gave up on Springockito and resorted to simply using Mockito for
the mocks I need with a ApplicationContextMock which is killing me as I have
quite a lot of mocks to implement just to get the user logged in to the
application and start a single page :(
I don't yet want to use Spring's ProxyFactoryBean in conjunction with
HotSwappableTargetSource as it would make a mess of my
applicationContext.xml.
~ Thank you,
Paul Bors
-----Original Message-----
From: Andreas Kuhtz [mailto:[email protected]]
Sent: Wednesday, June 12, 2013 11:26 AM
To: [email protected]
Subject: Re: Unit testing a repeater or data table by mocking its data
Hi Paul,
Not sure if I got you right but you might check out:
https://bitbucket.org/kubek2k/springockito/wiki/Home
Best regards
Andi
2013/6/12 Paul Bors <[email protected]>:
> I like the simplicity of Mockito and got it working in my unit tests, but
now I find myself mocking more services than I wanted.
>
> Wicket Page Teste allows you to inject your mocks on top of the
SpringBeans, is that possible with Mockito?
> http://WicketPageTest.sourceforge.net/
>
> In other words I want to have my normal XML mapped beans context have some
beans be overridden only for some tests (talk about being lazy).
>
> ~ Thank you,
> Paul Bors
>
> -----Original Message-----
> From: heikki [mailto:[email protected]]
> Sent: Tuesday, June 11, 2013 11:14 AM
> To: [email protected]
> Subject: Re: Unit testing a repeater or data table by mocking its data
>
> dear Paul,
>
> I've recently used Mockito and am quite happy with it. You can easily mock
any class and make it behave as you need.
>
> Best regards
> Heikki Doeleman
>
>
> On Tue, Jun 11, 2013 at 5:08 PM, Paul Bors <[email protected]> wrote:
>
>> Up to recently we got away with running our unit tests fully
>> integrated with the back end db by performing live queries via our
>> DAOs.
>>
>> Due to recent changes to our product schema we run into the
>> inevitable high cost of having to spend too much time on maintain our
>> mocked unit test data straight into the db. To cut down on that cost
>> I would like to start mocking most of our DAOs that back-up the data
>> tables in our product (gradually over time).
>>
>>
>>
>> Which brings me to my question, what's the recommended approach from
>> Wicket's team (or users) on mocking the DAOs that are used by the
>> data providers of your data tables?
>>
>>
>>
>> Our advantage is that we are using Spring and thus we could rely on
>> spring-test, its ReflectionTestUtils but I also took a look at
>> Mockito, EasyMock and such.
>>
>> I'm more curious as to what has been your experience in the past and
>> what would you consider to be the best approach?
>>
>>
>>
>> ~ Thank you,
>>
>> Paul Bors
>>
>>
>>
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]