내 코드에 대한 JUnit 테스트를 작성하려고하지만 일부 메소드에서는 다른 메소드가 호출됩니다. 이 호출을 조롱하는 것이 가능한가?테스트중인 클래스에서 메소드 호출을 조롱 할 수 있습니까?
예.
s3FileWrite(File file, Status status)
{
S3 s3 = new S3(file.getName, s3Service)
String key = s3.getKey();
String bucket = s3.getBucket();
File tmp = new File("tmp/" + s3.getName());
writeFile(key, bucket, tmp, status); //local method call I want to mock out
}//awsFileWrite
의 WriteFile 방법
내가 밖으로 조롱 할 것입니다 그리고 내가 테스트하고있는 클래스의 일부,하지만 난 그것을 조롱하는 방법을 모르겠어요. 테스트 할 클래스를 조롱 한 다음 내 기대에 대한 호출을 추가하는 것이 좋지만 여전히 메서드를 호출합니다.아무도 나에게 여기에 할 일에 대한 조언을 해 줄 수 있습니까?
편집 :
내 JMock 코드는 다음과 같습니다
@Test
public void testS3FileWrite()
{
fileName = context.mock(File.class);
s3Service = context.mock(FileDataAccessor.class);
s3 = context.mock(S3.class);
reportWriter = context.mock(ReportWriter.class);
try
{
context.checking(new Expectations(){{
oneOf(fileMetaData).getKey();
will(returnValue("s3Key"));
oneOf(fileMetaData).getBucketName();
will(returnValue("BucketName"));
oneOf(fileMetaData).getName();
will(returnValue("TempFile"));
((MethodClause) oneOf (any(File.class))).method("File").with(same("tmp/TempFile"));
oneOf(reportWriter).writeFile(with(same("s3Key")),
with(same("BucketName")),
with(any(File.class),
with(same(Status.OK)));
}});//Expectations
}
catch (Exception e)
{
ErrorStatus.debug("Exception in ReportTest.testS3FileWrite: " + e);
}//try-catch
ReportWriter test = new ReportWriter(status);
test.awsFileWrite(fileName, Status.OK);
}//testAWSFileWrite
클래스를 조롱하고'writeFile()'의 예상 결과를 정의한 코드를 게시 할 수 있습니까? – jere