2012-04-18 40 views
14

Tôi đang cố gắng sử dụng đối sánh đối số bên trong khi gọi đến phương thức có số lượng đối số thay đổi (điều ... trong Java) mà không thành công. Mã của tôi là dưới đây và tôi cũng sẽ liệt kê tất cả các dòng tôi đã cố gắng sử dụng để thực hiện công việc này.Mockito sử dụng đối số đối sánh khi gọi phương thức có số biến đối số

import static org.mockito.Mockito.*; 

public class MethodTest { 
    public String tripleDot(String... args) { 
     String sum = ""; 
     for (String i : args) { 
      sum += i; 
     } 
     System.out.println(sum); 

     return sum; 
    } 

    public static void main(String[] args) { 
     try{ 
      MethodTest mt = mock(MethodTest.class); 
      when(mt.tripleDot((String[])anyObject())).thenReturn("Hello world!"); 
      System.out.println(mt.tripleDot(new String[]{"1","2"})); 
     } 
     catch (Exception e) { 
      System.out.println(e.getClass().toString() + ": " + e.getMessage()); 
     } 
    } 
} 

Nếu tuyên bố in là:

System.out.println(mt.tripleDot(new String[]{"1"})); 

hoặc

System.out.println(mt.tripleDot("1")); 

Nó sẽ in "Hello world".

Nhưng nếu báo cáo kết quả in là:

System.out.println(mt.tripleDot(new String[]{"1","2"})); 

hoặc

System.out.println(mt.tripleDot("1","2")); 

Nó sẽ in "null".

Tôi cũng đã thử thực hiện các biến thể trong khi gọi, chẳng hạn như anyObject() hoặc anyString() nhưng không có kết quả. Tôi không chắc chắn nếu Mockito có thể xử lý bằng cách sử dụng đối sánh đối số liên quan đến các cuộc gọi phương thức bao gồm một số biến đối số. Thậm chí có thể không? Nếu vậy, tôi nên làm gì để thực hiện công việc này?

Trả lời

30

Thử trình ghép anyVararg(). Điều này đã được giới thiệu trong 1.8.1.

+0

Tôi cảm thấy rất xấu hổ ngay bây giờ. Cảm ơn bạn đã chỉ ra điều này. – Andrew

+2

@Andrew, Đừng lo lắng .. điều đó xảy ra với tất cả chúng ta. Đó là cách chúng ta học. : D – user1329572

+3

Tôi cần thêm một phút để tìm cú pháp chính xác: 'Matchers. anyVararg() ' – jan

4

Hãy thử Mockito.anyVararg(). Nó sẽ hoạt động.

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