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())は、同じクラスの別のメソッドを呼び出しています。私は内部メソッドの実行には関心がなく、それを模擬したいと思いますが、ワークフロークラスオブジェクトがインスタンス化される方法を考えれば、内部メソッドをどのようにモックするかについては明確ではありません。
誰かがこれを指摘できますか?
おかげ