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