Tôi đang thử nghiệm luồng đầu ra trong java giống như dưới đây.Kiểm tra outputstream.write (<String>) mà không cần tạo một tệp
Writer outputStream = getOutputStream(fileName);
if(outputStream != null) {
try {
outputStream.write(inputText);
}
finally {
outputStream.close();
}
}
else {
throw new IOException("Output stream is null");
}
Tôi viết một bài kiểm tra Mockito như sau
public void testFileWrite() throws IOException {
when(testObj.getOutputStream(outputFileNameValidValue)).thenReturn(outputStreamMock);
doNothing().when(outputStreamMock).write(Matchers.anyString());
doNothing().when(bufferedReaderMock).close();
testObj.write(outputFileNameValidValue, reveredFileInput);
verify(outputStreamMock).write(Matchers.anyString());
verify(outputStreamMock).close();
}
Vấn đề là khi bạn tạo OutputStreamWriter(new FileOutputStream(filename))
một tập tin vật lý trên đĩa được tạo ra.
Chúng tôi có thể kiểm tra Outputstream.write
mà không thực sự viết tệp trên đĩa không?
Cảm ơn Anand
Xin làm rõ - nơi nào bạn tạo ra một 'OutputStreamWriter' - Tôi không nhìn thấy nó trong mã của bạn. Tôi đoán rằng nó nằm trong 'getOutputStream' - ngoại trừ việc bạn đã loại bỏ phương thức này. Bạn cần đăng tất cả mã của mình nếu bạn muốn mọi người làm tốt công việc giúp bạn. Ngoài ra, 'getOutputStream' có thể được gọi là cái gì đó khác (có thể là' makeWriter'), bởi vì nó không nhận được một 'OutputStream'. –
Trong phương thức getOutputStream. Lý do tôi chuyển nó sang phương pháp với hy vọng rằng mockito sẽ không chạy mthod và trả lại mô hình. nhưng tôi sai. – Anand
Sau khi googling và đọc vài tài liệu phát hiện ra rằng PowerMock có thể làm điều này một cách dễ dàng. Với expectNew hoặc sử dụng suppressConstructor và Whitebox.setInsternalState. Thật dễ dàng để thử nghiệm những thứ như vậy với PowerMock. Cảm ơn tất cả các bình luận và câu trả lời của bạn ..kính trọng, Anand Barhate – Anand