2014-11-19 11 views
5

Tôi đang cố gắng chuyển ký tự đại diện vào phương thức mockito any(). Đây là phương phápSử dụng mockito với agruments wildcard

selectGatewayInfoConfig(Operation<?> o) 

Những gì tôi đang cố gắng làm là:

when(gatewayConfigSelector.selectGatewayInfoConfig(any(**!!!!!! HERE I NEED THIS WILDCARD !!!!**)); 
       .thenReturn(...something...); 

Cảm ơn trước.

Trả lời

5

Làm thế nào?

when(gatewayConfigSelector.selectGatewayInfoConfig(any(Operation.class)); 
      .thenReturn(...something...); 

Ví dụ:

@Test 
public void test() { 
    Tester mock = Mockito.mock(Tester.class); 
    Mockito.when(mock.selectGatewayInfoConfig(Mockito.any(Operation.class))).thenReturn("blah"); 

    System.out.println(mock.selectGatewayInfoConfig(null)); 
} 


class Operation<T> { 

} 

class Tester { 

    public String selectGatewayInfoConfig(Operation<?> o) { 
     return "hi"; 
    } 
} 
+0

Vấn đề là phương pháp selectGatewayInfoConfig trong lớp Tester không phải là một phần của mã thử nghiệm, nơi KHI điều kiện nên áp dụng. – user1554427

+0

Tôi rất tiếc vì tôi không hiểu nhận xét của bạn. Lớp bạn đang chế nhạo thường là bởi vì nó không phải là những gì bạn muốn kiểm tra - đó là những gì bạn muốn thử. Miễn là lớp học trên classpath của bạn và không phải là cuối cùng bạn sẽ có thể thử nó như trên. Đây có phải là phương thức loại trả về khoảng trống không? Nếu vậy, khi() cần phải được viết một chút khác nhau. Nếu không, sử dụng bất kỳ matcher (Operation.class) nào cũng được. –

Các vấn đề liên quan