我想TDD复合异步进程/任务,但我不知道该怎么做。
这个过程是这样的:
UploadItem
CreateItemOnServer
UploadMedia
IterateAndDo
UploadFile
UpdateLocalDB
CreateItemOnServer向服务器发送命令并返回项ID和一些元数据。然后,UploadMedia使用项目ID和媒体列表迭代该列表并上传所有媒体文件。完成后,将使用itemID和服务器元数据更新localDB。
UploadItem可以像这样使用:
var uploadItem:UploadItem = new UploadItem(itemToUpload);
uploadItem.addEventListener("onUpdate", onUpdate);
uploadItem.addEventListener("onError", onError);
uploadItem.addEventListener("onComplete", onComplete);
uploadItem.start();
感觉就像强制依赖注入一样,但也许是正确的。
new UploadItem(
itemToUpload,
new CreateItemOnServer(),
new UploadMedia(
new IterateAndDo(
new UploadFile())),
new UpdateLocalDB()
);
顺便说一下,我正在使用ActionScript 3,FlexUnit和mockolate。
提前致谢。
修改1
发现如何在start()方法之前测试setData():
var s:Sequence = new Sequence();
expect(uploadFileMock.setData(expectedData)).once().inSequence(s);
expect(uploadFileMock.start()).once().inSequence(s);