我正在尝试为我们的应用程序的登录过程编写一些端到端测试,但是我难以理解设置用户需要更改密码的最佳方法。
当我们的服务器响应成功登录时,将返回一个带有changePassword
字段的用户对象。然后,客户端检查响应并进行相应的重定向。
我的问题是要设置测试,以便设置changePassword
字段-最佳使用方法是什么?
我认为我的选择是:
为服务器创建一个测试设置和拆卸脚本,该脚本专门为测试运行创建了一个全新的用户,并changePassword
在数据库中设置了标记。
这似乎是最端到端的方法,但也可能是最费力的代码。
以某种方式截取测试中的http响应,并修改changePassword
仅为此测试设置的标志。
完全模拟http响应。使用这种方法从端到端测试中删除得最多,但是也许最简单?
最佳或最常见的方法是哪一种?同样,关于如何用量角器实际实现上述方法(尤其是1和2)的任何一般性指示都将是很棒的-我发现很难从概念上直截了当地,因此很难知道要寻找什么。
我使用量角器作为测试框架,由angular.js为客户端提供动力,并使用(其中包括)express.js和mongoDB运行节点服务器。
进一步考虑之后,选项1是最佳解决方案,但并非总是可行的。
选项2也是可行的,应该避免选择3。
对于选项二,可以这样创建一个模拟模块:(coffeescript)
e2eInterceptors =->
angular.module('e2eInterceptors', [])
.factory('loginInterceptor', ()->
response: (response)->
# Only edit responses we are interested in
return response unless response.match(/login/)
# do the modifiations
response.data.changePassword = true
# return the response
return response
)
.config(($httpProvider)->
$httpProvider.interceptors.push('loginInterceptor')
)
然后,您可以使用以下命令将此模块注入测试中
browser.addMockModule('e2eInterceptors', e2eInterceptors)
如果要全局执行此操作,可以将其放在onPrepare
量角器文件中的函数中,否则仅在测试中需要时调用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句