AWS SWF 워크 플로우에 대한 단위 테스트를 작성하려고합니다. 아래는 내가SWF 워크 플로우 클라이언트에서 다른 메소드 모의
@Override
public void execute(String abc) {
new TryCatch() {
@Override
protected void doTry() throws Throwable {
Promise<SomeObject> temp = activityClient.action(abc);
again(temp, abc);
}
@Override
protected void doCatch(Throwable e) throws Throwable {
throw new RuntimeException(e);
}
};
}
@Asynchronous
public void again(Promise<SomeObject> someObject, String abc) {
// Do Something
}
내 테스트 클래스를 테스트하고자하는 코드는 다음과 같이이다 : 나는 테스트 클래스 이상 작성하는 SWF Testing Docs을 사용했다
public class SomeWorkflowTest extends AbstractTestCase {
@Rule
public WorkflowTest workflowTest = new WorkflowTest();
List<String> trace;
private SomeWorkflowClientFactory workflowFactory = new SomeWorkflowClientFactoryImpl();
@Before
public void setUp() throws Exception {
trace = new ArrayList<String>();
// Register activity implementation to be used during test run
SomeActivitiesImpl activitiesImpl = new SomeActivitiesImpl() {
@Override
public SomeObject performHostRecovery(String abc) {
trace.add("ABC: " + abc);
SomeObject testObject = new SomeObject();
return testObject;
}
};
workflowTest.addActivitiesImplementation(activitiesImpl);
workflowTest.addWorkflowImplementationType(SomeWorkflowImpl.class);
}
@Test
public void testWorkflowExecutionCall() throws Throwable {
SomeWorkflowClient workflow = workflowFactory.getClient("XZY");
workflow.execute("XYZ");
List<String> expected = new ArrayList<String>();
expected.add("ABC: abc");
AsyncAssert.assertEqualsWaitFor("Wrong Wrong", expected, trace, null);
}
}
. 그러나 내가 테스트 (execute())하고있는 메소드는 같은 클래스에있는 다른 메소드를 호출하고있다. 나는 내부 메소드의 실행에 관심이 없으며 그것을 조롱하고 싶다.하지만 워크 플로우 클래스 객체가 인스턴스화되는 방식을 고려할 때, 내부 메소드를 조롱하는 방법은 분명하지 않다.
누군가가 이것을 지적 할 수 있습니까?
감사