我写了一些单元测试 测试围绕 FTP 服务器 API 的包装器。
单元测试和 FTP 服务器都在同一台机器上。
包装器 API 被部署到我们的平台,并用于远程和 Web 服务场景。包装器 API 本质上采用 XML 消息来执行诸如添加/删除/更新用户、更改密码、修改权限……之类的任务。
在单元测试中,假设将用户添加到虚拟域,我创建了要发送到 API 的 XML 消息。 API 完成它的工作并返回一个响应,其中包含有关操作是成功还是失败的状态信息(错误代码、验证失败等)。
为了验证 API 包装器代码是否确实做了正确的事情(如果响应表明成功),我调用了 FTP 服务器的 COM API 并直接查询其存储以查看,例如在创建用户帐户时,用户帐户是否真的做了被创造。
这味道难闻吗?
更新 1: @Jeremy/Nick:包装器是测试的重点,FTP 服务器及其 COM API 是 3rd 方产品,大概经过良好测试且稳定。包装器 API 必须解析 XML 消息,然后调用 FTP 服务器的 API。我将如何验证(这可能是一个愚蠢的情况)包装器正确设置了用户帐户的特定属性。例如,由于包装器代码中的拼写错误而设置了 FTP 帐户的错误属性或属性。一个很好的例子是设置上传和下载速度限制,这些可能会在包装器代码中被转换。
更新 2:谢谢大家的回答。对于建议使用模拟的人来说,我已经想到了,但是那里的灯还没有打开,我仍在努力弄清楚如何让我的包装器与 FTP 服务器的模拟一起工作.模拟将驻留在何处,我是否将所述模拟的实例传递给包装器 API 以使用而不是调用 COM API?我知道 mock 但我很难理解它,主要是因为我发现大多数示例和教程都非常抽象,并且(我很惭愧地说)几乎无法理解。
最佳答案
您似乎在混合单元和组件测试问题。
关于unit-testing - 在测试 API 的包装器时,我的单元测试是否应该直接接触 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/213646/