Question

I'm trying to mock an open-source class. That class uses a number of public variables instead of get methods. I need to have the mocked class return another mocked class when that variable is accessed, but I'm not sure how. Here's an example:

SolrQueryRequest request = createNiceMock(SolrQueryRequest.class);
...
replay(request);

ResponseBuilder builder = createNiceMock(ResponseBuilder.class);
expect(builder.req).andReturn(request); // Throws exception
replay(builder);

The above example, however, throws the exception java.lang.IllegalStateException: no last call on a mock available on the builder.req line. Any idea how I can do this? Please note I don't have the option of refactoring the mocked classes.

Was it helpful?

Solution

Well, after playing around with it more I discovered it was pretty easy:

myBuilder.req = request;

Now when my class under test accesses the myBuilder.req variable, it is correctly set to my mocked SolrQueryRequest.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top