cypress检索JWToken并设置为进一步请求的标头
[在尝试构建快速Web应用程序时,我应该首先进行身份验证以检索JWT令牌,令牌检索有效,但是用于设置进一步请求的标头的方法不起作用。
此代码创建需要身份验证时运行的方法,
Cypress.Commands.add("userRequest", function(requestObj) {
// Make a login request, returning a JWT token
cy.request({
method: 'POST',
url: '/credentials',
body: {
"name": "test_user",
"password": "test123_"
}
}).then(function(response) {
requestObj.headers = requestObj.headers || {};
requestObj.headers.Authentication = response.body.token;
return cy.request(requestObj);
});
这是运行的代码
it('retrieves one user', function () {
cy.userRequest(cy.request({
url: '/users/1'
})).then(function (response) {
expect(response.body.name).to.equal("admin");
});
});
但是测试运行控制台告诉我
[CypressError:cy.request()在以下位置失败:
http://localhost:3000/users/1
我们从您的Web服务器收到的回复是:
401:未经授权
这被认为是失败的,因为状态代码不是'2xx'或'3xx'。
有人可以帮我吗?
提前感谢!
回答如下:正如我在评论中所说,赛普拉斯可用于异步编程,因此请在support / command.js中尝试使用
cypress检索JWToken并设置为进一步请求的标头
[在尝试构建快速Web应用程序时,我应该首先进行身份验证以检索JWT令牌,令牌检索有效,但是用于设置进一步请求的标头的方法不起作用。
此代码创建需要身份验证时运行的方法,
Cypress.Commands.add("userRequest", function(requestObj) {
// Make a login request, returning a JWT token
cy.request({
method: 'POST',
url: '/credentials',
body: {
"name": "test_user",
"password": "test123_"
}
}).then(function(response) {
requestObj.headers = requestObj.headers || {};
requestObj.headers.Authentication = response.body.token;
return cy.request(requestObj);
});
这是运行的代码
it('retrieves one user', function () {
cy.userRequest(cy.request({
url: '/users/1'
})).then(function (response) {
expect(response.body.name).to.equal("admin");
});
});
但是测试运行控制台告诉我
[CypressError:cy.request()在以下位置失败:
http://localhost:3000/users/1
我们从您的Web服务器收到的回复是:
401:未经授权
这被认为是失败的,因为状态代码不是'2xx'或'3xx'。
有人可以帮我吗?
提前感谢!
回答如下:正如我在评论中所说,赛普拉斯可用于异步编程,因此请在support / command.js中尝试使用