2016-12-08 39 views
0

所以基本上我想創建一個mockito單元測試,它返回一個泛型類型,對於我來說驗證該方法返回特定的對象類型是非常重要的。任何想法或提示都會有所幫助。Mockito - Return通用類型(多個)

class Example { 
    public AnotherClass<T> generateExampleType(String args) { 
     return new AnotherClass<T> (args); 
    } 
} 

class Another { 

    String method1(Type1 a) { 
     // 
    } 

    String method2(Type2 a) { 
     // 
    } 
} 

class ClassUnderTest{ 


    public void methodUnderTest() { 

    // code 

     AnotherClass<Type1> obj1 = helper.<Type1>generateExampleType("abc"); 
     AnotherClass<Type2> obj2 = helper.<Type2>generateExampleType("def"); 

     String one = another.method2(obj2); 
     String two = another.method1(obj1); // this fails as part of verify in unit test 

    // code 
    } 
}  

測試

when(helper.<Type1>generateExampleType(anyString()).thenReturn(Obj1Mock); 
when(helper.<Type2>generateExampleType(anyString()).thenReturn(Obj2Mock); 
verify(another).method2(Obj2Mock); 
verify(another).method1(Obj1Mock); // This fails expected Obj1, actually passed Obj2 

兩個OBJ1和OBJ2被用作在相同的工作流程的其他方法調用的一部分。然而,總的Mockito默認爲最後創建(OBJ2在這種情況下)和我的單元測試失敗

/* 
Expected class - Type1 
Actually invoked - Type2 
*/ 
+1

爲什麼要返回一個泛型類型? –

+0

'generateExampleType'方法沒有類型參數。 – Bubletan

+0

@Tim - 我想返回一個通用的,它是一個巨大的工作流程的一部分 – NirmalGeo

回答