我试图嘲笑一个开源类。该类使用许多公共变量而不是get方法。当访问该变量时,我需要让mocked类返回另一个模拟类,但我不确定如何。这是一个例子:
SolrQueryRequest request = createNiceMock(SolrQueryRequest.class);
...
replay(request);
ResponseBuilder builder = createNiceMock(ResponseBuilder.class);
expect(builder.req).andReturn(request); // Throws exception
replay(builder);
但是,上面的示例会在java.lang.IllegalStateException: no last call on a mock available
行引发异常builder.req
。知道我怎么能这样做吗?请注意,我没有选择重构被模拟的类。
答案 0 :(得分:1)
好吧,在玩了之后我发现它很简单:
myBuilder.req = request;
现在,当我的受测试类访问myBuilder.req
变量时,它已正确设置为我的模拟SolrQueryRequest
。