2015-05-27 18 views
14

Tôi muốn thử một phương pháp có chữ ký như:Mockito.any() cho <T>

public <T> T documentToPojo(Document mongoDoc, Class<T> clazz) 

tôi thử nó như sau:

Mockito.when(mongoUtil.documentToPojo(Mockito.any(Document.class), Mockito.any(WorkItemDTO.class))) 

Nhưng tôi nhận được lỗi như:

Phương pháp documentToPojo(Document, Class<T>) trong loại MongoUtil không áp dụng cho các đối số (Document, WorkItemDTO)

Có phương pháp nào trong Mockito sẽ giúp tôi giả lập T không?

+0

Tại sao bạn cần giả lập tham số thứ hai? –

+0

Thực ra tôi muốn trả về đối tượng giả cho phương thức này. Tôi không chế nhạo tham số thứ hai. Tôi đang chế giễu phương thức documentToPojo –

+1

Xin lỗi, tôi đã cố gắng diễn tả, công việc này không? 'Mockito.when (mongoUtil.documentToPojo (Mockito.any (Document.class), WorkItemDTO.class))' Không có 'bất kỳ' thứ hai nào? –

Trả lời

16

Lưu ý rằng documentToPojo mất một Lớp như là đối số thứ hai. any(Foo.class) trả về một đối số thuộc loại Foo, không thuộc loại Class<Foo>, trong khi eq(WorkItemDTO.class) phải trả lại Class<WorkItemDTO> như mong đợi. Tôi sẽ làm theo cách này:

when(mongoUtil.documentToPojo(
    Mockito.any(Document.class), 
    Mockito.eq(WorkItemDTO.class))).thenReturn(...); 
+0

Mockito.eq hoạt động. Cảm ơn Jeff :) –

+0

Nó không làm việc cho tôi. Tôi đang sử dụng Java 8 và Mockito 2.7.5 – Pretty

1

Bạn có thể phù hợp với một Class<T> luận chung sử dụng đơn giản any(Class.class), Eg .:

Mockito.when(mongoUtil.documentToPojo(Mockito.any(Document.class), 
             Mockito.any(Class.class))); 

Chúc mừng,

+0

Mockito.any không làm việc cho T và tôi đã đề cập đến nó trong câu hỏi của tôi. –

+0

Đã không hoạt động vì Java 8 btw – yunandtidus

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