Tôi đang thử một lớp nhất định. Lớp này là nội bộ instantiating một "GetMethod" đối tượng được truyền cho một "HttpClient" đối tượng được tiêm vào lớp thử nghiệm.Ghi lại một đối số trong Mockito
Tôi đang chế nhạo lớp "HttpClient", nhưng tôi sẽ cần phải sửa đổi hành vi của một phương thức của lớp "GetMethod". Tôi đang chơi với ArgumentCaptor nhưng tôi dường như không thể có được một tổ chức của đối tượng instantiated trong "khi" cuộc gọi.
Ví dụ:
HttpClient mockHttpClient = mock(HttpClient.class);
ArgumentCaptor<GetMethod> getMethod = ArgumentCaptor.forClass(GetMethod.class);
when(mockHttpClient.executeMethod(getMethod.capture())).thenReturn(HttpStatus.SC_OK);
when(getMethod.getValue().getResponseBodyAsStream()).thenReturn(new FileInputStream(source));
đáp ứng:
org.mockito.exceptions.base.MockitoException:
No argument value was captured!
You might have forgotten to use argument.capture() in verify()...
...or you used capture() in stubbing but stubbed method was not called.
Be aware that it is recommended to use capture() only with verify()
Bạn đã đăng nó khi tôi đang chỉnh sửa câu trả lời của mình. Vâng, cả hai chúng tôi đã giải quyết nó theo cách tương tự :) – amorfis
Có, tôi không thể tìm thấy bất kỳ cách nào khác để làm điều đó với các công cụ có sẵn. Nasty hack :) nhưng nó đá khi nó hoạt động! –