考虑以下测试输出:
`
总而言之,不支持 Word 文档,而支持 PDF。所以我们立即拒绝 Word 文档。但是对于 PDF,还有更多的步骤需要测试,所以我们这样做了。
问题是,假设我还想支持文本文件,它具有与 PDF 完全相同的工作流程。我正在测试的代码基本上如下所示:
function uploadDocument(type, document) {
if (type !== "application/pdf" && type !== "text/plain") {
throw new UnsupportedMediaTypeError();
}
// do all the steps involving temp documents, hashing, ownership, etc.
}
我的问题是:我怎样才能为此构建我的测试?我不想将“上传 PDF 时”下面的整个树复制为“上传文本文件时”。
我觉得我经常遇到这个问题。如您所见,我已经做了一些重复(“删除临时文档成功”和“提交临时文档成功”下的条目是相同的)。
本质上,这是一个改变系统的多个维度并组合测试它们的问题。一定有人想到了如何构建这样的测试。