如何测试在浏览器中发送请求的函数,该请求需要身份验证
How do I test a function that sends a request in browser that requires authentication?
我正在Mocha和Chai中编写单元测试的过程中,我试图找出如何测试使用fetch
API发送需要会话访问的请求的功能。这个函数是一个ES6方法,返回一个thenable
对象。
_auth(record) {
var authMetadata = this._getAuthMetadata(record);
var authUrl = `/${this._getPortal(window.location.pathname)}/tlist_child_auth.html?${this._encodeUri(authMetadata)}`;
if (getPortal() !== 'guardian') {
authUrl += `&frn=${this.coreTableNumber}${this.foreignKey}`;
}
return fetch(authUrl, {
credentials: 'include'
}).then(function(rawData) {
return rawData.text();
});
}
tlist_child_auth.html
是需要会话授权才能访问的页面。有什么简单的方法可以做到这一点,或者我应该寻求"发明轮子"吗?
使用单元测试,其思想是测试您感兴趣的单元,并且只测试单元。在本例中,单元使用fetch
,它自己启动并与网站对话,因此实际上您的单元测试最终会对网站进行往返,因此您最终也会"测试"。这不是你想要的单元测试。
只测试您感兴趣的部分的正确方法是模拟fetch
函数,并使用模拟来验证它是以您期望的方式调用的,另外还要从模拟返回数据到您的单元,它可以使用这些数据来完成测试。您可以执行其他检查,以确保您的单位已按您期望的方式处理退货。
似乎至少有一个npm包可用于mock fetch
。
相关文章:
- 暂停函数执行流程,直到ajax请求完成
- google在类内映射javascript directionsService.route请求:将类实例传递给回调函数
- 迭代node.js请求函数
- sinon 存根嵌套在描述/请求函数中
- 无法渲染在 jQuery $.get 请求函数中添加到场景中的三个 js 对象
- 引用请求函数之外的值
- 在javascript xhr请求函数上显示/隐藏html元素
- ajax 请求函数在调用时不起作用
- 请求函数在node.js中执行不正常
- 从Unirest节点获取请求函数发送响应到Jade视图
- 将变量传递给对象键函数并返回给请求函数
- 如何处理从facebook请求函数返回的响应
- API请求函数清理AngularJS
- 如果长时间没有返回响应,如何在node.js中强制请求函数终止
- 在转换请求函数中获取$http选项
- 从http请求函数返回数据
- Bot必须重新启动才能将用户输入传递给请求函数
- 如何在请求函数之外引用一个值
- 如何确保一个请求函数在执行一个方法之前是完整的
- HTTP请求函数不返回结果