0
我正在尝试为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
}
我的测试类代码如下:
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);
}
}
我已经使用SWF Testing Docs写上面的测试类。然而,我正在测试的方法(execute())正在调用同一类中的另一个方法。我不关心内部方法的执行情况,并且想嘲笑它,但考虑到工作流类对象被实例化的方式,我不清楚如何模拟内部方法。
有人能指出这一点吗?
感谢