如何正确测试具有身份验证的RESTful API

时间:2016-12-08 04:34:47

标签: javascript node.js rest unit-testing authentication

我想为我的Node.js API编写自动化测试,我已经开始使用Mocha和Chai,使用chai-http来管理请求。

我已经找到了通往www.example.com/users的路线,并成功编写了自动化测试来注册用户并登录用户,所以我认为我在路上,但现在几乎所有其他用户路由要求用户进行身份验证!由于我在测试期间嘲笑数据库(使用带有mongoose的mockgoose),我已经处理了这种依赖。但是,这提出了一个问题,如何让用户通过身份验证,但仍然没有将我的测试暴露给多个可能更改的代码?

通过程序的流程相对简单:在请求安全资源时,有中间件对用户进行身份验证,然后将user对象附加到请求上。然后,user对象使路由可以访问用户的信息并调用数据库。

因此,一旦调用了API,我认为理想的解决方案会将user对象附加到请求对象。

由于我对测试比较陌生,我欢迎任何能让我深入了解更好测试程序的反馈。

1 个答案:

答案 0 :(得分:0)

我已经通过利用Mocha提供的beforeEach钩子完成了这项任务。在其中,我调用一个名为seedDB的函数,该函数模拟数据库并返回一个包含我需要的所有信息的对象。 seedDB函数实际上发布到API以执行注册用户和登录等操作,然后使user对象和token可供我的测试使用宾语。到目前为止,它的效果非常好,因为当我在API /验证路径中更改内容时,测试会自动响应更改。