Mockito 1.9.5 throws UnfinishedStubbingException



有人能确定Mockito 1.9.5为什么在该代码的"doesWhatIExpectItTo"测试中抛出UnfinishedStubbingException吗?

public interface Thing {
    String getId();
    boolean isReady();
}
public interface ThingCache {
    Thing getThing(String theId);
}
private Set<String> getThingIdSet(int theSize){
    Set<String> thingIds = new HashSet<String>();
    for(int i = 0; i < theSize; i++ ) {
        thingIds.add("thingId-" + i);
    }
    return thingIds;
}
private Thing getANewThing(String theId, boolean isReady) {
    Thing theNewThing = mock(Thing.class);
    when( theNewThing.getId() ).thenReturn(theId);
    when( theNewThing.isReady() ).thenReturn(isReady);
    return theNewThing;
}
@Test
public void doesWhatIExpectItTo() {
    ThingCache theCache = mock(ThingCache.class);
    Set<String> thingIds = getThingIdSet(5);
    for ( String thingId : thingIds ) {
        when( theCache.getThing( thingId ) ).thenReturn( getANewThing(thingId, true) );
    }
}

我尝试了各种选择,包括论点匹配器和Answer,浏览了我能找到的未完成的存根异常问题,但我似乎找不到任何东西来克服这个基本问题。

我似乎缺少了一些简单/明显的东西。

Doh!

问题是,我在.thenReturn()调用的上下文中调用getANewThing(),并且不能在该上下文中启动新的.when()调用。

答案是在对ThingCache.getThing()方法调用.when()之前构造Thing mock。

相关内容

  • 没有找到相关文章

最新更新