node.js:为API等社交网络编写测试用例

时间:2016-02-18 05:55:11

标签: node.js mongoose integration-testing mocha chai

我正在为社交网络应用程序开发用于学习视角的API。当我开始编写测试用例时,我坚持如何组织/编写测试用例。我最初是这样的:

首先设置全局数据库初始化: 我需要一些用户的auth令牌来测试我的路线,所以我决定在全球范围内设置这些信息。还有其他信息也需要在全球范围内设置,所以我也设置了它。

然后是每条路线: 我开始编写测试用例,并认为我会编写测试用例 这样一种方式,每个路由测试用例都是相互独立的。

完成所有测试套件后 我以为我会清理我的数据库。

我遇到的这种方法的问题是:

我想测试四条名为 / users / users /:id / my_invites / send_invites /的路线response_invites 即可。进一步假设我只对为 / users / users /:id / invites 编写GET请求和响应的测试用例以及在其他情况下发布数据感兴趣。 / send_invites / response_invites 肯定会在服务器端触发一些修改数据库状态的操作。

当我们看到这些路由影响其他路由数据的状态时,说一个用户将邀请发送给另一个用户并获得响应true / false,因此对于该用户他的请求是成功的但是如何确保另一个用户实际接收到如果我们在第一次路线测试案例中没有检查他收到的邀请文件(即通过另一条路线),请发出邀请。意味着 / send_invites 影响 / users /:id / my_invites

因为这些路线彼此依赖

So The questions I want to ask are:

如何为这些路由编写测试用例,以便每条路由都是独立的?

我在全球范围内尝试了三个虚拟测试用户,并在所有测试套件中尝试了所有类型的组合。我的测试套装目前处理多条路线来检查1路真正的功能。

Can anyone suggest me better solution for writing test cases for the above mentioned scenarios?

可能是我的问题太长或不清楚。如果可以,请告诉我并帮助我。

1 个答案:

答案 0 :(得分:0)

我的意见:

首先,基础EACH测试用例应该有一个全新的状态。这意味着在检查一个场景之前,您希望刷新数据库并插入准备好测试该案例场景的新数据。您可以使用真实的数据库模拟内存中的数据,或者您喜欢的数据。

其次,每个端点都可能影响数据库中的许多表。因此,检查数据状态是完全正常的,与表格无关,以检查信息是否正确。

摩卡和其他测试框架都有帮助你做到这一点的功能。就像之前和之后每个测试用例之前设置和拆除数据一样。