最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

cypress检索JWToken并设置为进一步请求的标头

IT培训 admin 4浏览 0评论

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中尝试使用
发布评论

评论列表 (0)

  1. 暂无评论