2012-02-25 136 views
8

我有一些单元测试和模拟的经验。在我有限的经验中,我会用这两者来测试一个服务层,例如,模拟(剔除?)数据库以消除依赖关系,并专注于单元测试业务逻辑。单元测试REST API

现在我正在创建一个将使用RESTful Web服务的包装器API实现。发回给我的json结果结构不在我手中,例如:Twitter。我只是建立客户端与他们的API接口。我不确定如何去测试json结果的单元测试。现在我只是用静态的json结构来嘲笑http请求的结果。这确保了json对我的pojos的反序列化是正确的,但我关心API的变化。如果api结构发生变化呢?如果api目前返回“标题”和明天返回“groovy_title”会怎么样?我的单元测试无法捕捉到。

从我的理解,虽然 - 单元测试应该是快速的。以前我会嘲笑分贝,现在我正在嘲笑http,但是我是否应该使用具体的http实现,以便立即通知突发api更改?还是有更好的方法来处理这种情况?

回答

4

我会继续做你正在做的事,并模拟你的代码和外部API之间的接口。正如你指出的那样,这不会检测到外部API的变化。

你可以写集成实际去外部服务器测试API更改的测试。我怀疑你已经将进行交互的代码分离出来到自己的服务器/模块中,这样你就可以在不受应用中超过1个抽象层的阻碍的情况下ping外部API。

请注意,您可以在不使用应用程序代码的情况下构建这些测试;即只是wget或卷曲,并对结果做一些分析...

这个问题很重要;把我的头顶部:

您需要一个网络连接
较慢
外部服务可以暂时关闭 - 即失败可能意味着不同的事情。