2016-12-08 27 views
2

我想为我的Node.js API编写自动化测试,并且我已经开始使用Mocha和Chai,使用chai-http来管理请求。如何正确测试具有身份验证的RESTful API

我已经有了一个通往www.example.com/users的路线,并且已经成功地编写了自动化测试来注册用户并登录用户,所以我以为我在路上,但现在几乎所有的其他路由需要用户进行身份验证!由于我在测试过程中嘲笑数据库(使用mongoose使用mockgoose),我已经注意到了这种依赖关系。但是,这带来了一个问题,我如何获得一个用户身份验证,但仍然不会暴露我的测试多个,可能会改变的代码段?

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

所以,我想一个理想的解决方案将附加一个user对象的请求对象,一旦调用了API。

由于我相对较新的测试,我会欢迎任何反馈,让我洞察到更好的测试程序。

回答

0

我已经完成了这项任务,利用摩卡提供的beforeEach挂钩。其中,我调用一个叫做seedDB的函数,它嘲笑数据库并返回一个包含我需要的所有信息的对象。 seedDB函数实际上发布到API以执行诸如注册用户和登录之类的事情,然后使user对象和token都可供我的测试通过该对象访问。到目前为止,它的结果非常好,因为当我在API /验证路径中更改内容时,测试会自动响应这些更改。