Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 具有身份验证的服务器、使用mocha进行测试、设置初始用户会导致服务器超时_Unit Testing_Mongoose_Automated Tests_Mocha.js - Fatal编程技术网

Unit testing 具有身份验证的服务器、使用mocha进行测试、设置初始用户会导致服务器超时

Unit testing 具有身份验证的服务器、使用mocha进行测试、设置初始用户会导致服务器超时,unit-testing,mongoose,automated-tests,mocha.js,Unit Testing,Mongoose,Automated Tests,Mocha.js,我已经构建了一个带有身份验证的web服务器。这意味着,当用户发出请求(登录、注册和注销除外)时,用户必须提供令牌。这一切似乎都很好地工作,我已经在前端工作了大约2周,没有很多问题。如果令牌有效(在Redis存储中),它将完成api请求,或者返回“未授权用户”消息 问题是,我现在决定开始使用mocha彻底测试所有服务器端代码 我目前唯一能想到的方法是: const createUser=函数(数据){ 返回( 请求(服务器地址) .post('auth/register') .set('cont

我已经构建了一个带有身份验证的web服务器。这意味着,当用户发出请求(登录、注册和注销除外)时,用户必须提供令牌。这一切似乎都很好地工作,我已经在前端工作了大约2周,没有很多问题。如果令牌有效(在Redis存储中),它将完成api请求,或者返回“未授权用户”消息

问题是,我现在决定开始使用mocha彻底测试所有服务器端代码

我目前唯一能想到的方法是:

const createUser=函数(数据){
返回(
请求(服务器地址)
.post('auth/register')
.set('content-type','application/x-www-form-urlencoded')
.type('form')
.send('userName='+data.name)
.send('email='+data.email)
.send('password='+data.password)
);
}
之前((完成)=>{
var用户=[];
对于(var i=0;i});您的第一个选择是实现这一目标的理想方式

创建一些我从未注销过的测试用户,因此他们的令牌在机器死机之前是有效的

这就是路。更具体地说:

  • 在开始测试之前,创建一个包含一些虚拟数据的脚本。理想情况下,您可以创建一些假定已注册的用户

  • 当然,你也应该测试一个注册流程,在那里你自己注册了一个全新的用户,并测试它是否有效;避免将此用户用于其他测试。相反,请使用在初始种子设定中添加的用户之一

  • 创建一个模块,用于导出有关您作为数据库种子的用户的数据。通过这种方式,您可以避免在测试中到处硬编码/重复您的用户及其令牌

  • 完成测试后,运行另一个脚本以清除数据库

理想情况下,对在开始测试之前设置的数据库运行测试,并在测试后拆除该数据库

至于你的第二个选择:

我的第二个想法是在测试环境时关闭身份验证

我会避免这样。您应该按原样测试代码。您希望彻底测试您的身份验证系统,这也是非常合理的

使用
NODE\u ENV=test
条件更改流/或重定向如下内容:

  • 向何处发送用户注册电子邮件
  • 呼叫昂贵的按次付费外部服务等
测试时尽量不要滥用此功能。使用它的必要性,但不是为了方便

问题是,在当前的方法中,服务器实际上只是超时,只创建了3个用户


我猜这是一个你需要自己调试的代码问题。我的答案集中在您的测试最佳实践问题上。

非常感谢您提供了全面详细的答案。