КИПРЕСС хранит ответ cy.request в переменной - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть этот файл, который вызывает функцию входа в систему

testing.js

var res = accounts.createSession(config.email_prod,config.password_prod,user_id)

в другом файле, у меня есть это:

accounts.js

export function createSession(email,password,user_id){
    cy.request({
        method:'POST',
        url:config.accounts_prod + '/token',
        headers:{ 
            'authorization': 'Basic testestestestest'
        },
        qs:{
            'grant_type':'password',
            'username':email,
            'password':password
        }
    }).then((response)=>{
        var X = response.body.access_token      
        cy.log("create session " + x)
        login(response.body.access_token, user_id)
    })
}

export function login(token,user_id){
    var result = cy.request({
    method:'POST',
    url:config.ws_prod + '/login.pl',
    headers:{ 
        'authorization': token,
        'Content-Type' : 'application/x-www-form-urlencoded'
    },
    body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
    })
    return token
}

, поэтому я хочу сохранить значение token и вернуть его в переменную res в файле testing.js. но каждый раз, когда я храню токен (в этом примере я храню его внутри X), и я пытаюсь распечатать его, он всегда говорит undefined но я могу сделать cy.log (токен), и это нормально для функции login (), но это все, что он может сделать, он не может быть сохранен в переменной есть ли другой способ для меня хранить token?

1 Ответ

0 голосов
/ 14 ноября 2018

Возможно, если я использую параметр, подобный обратному вызову, вторая функция будет ожидать окончания асинхронной задачи

   export function createSession(email,password,user_id,callback){
    cy.request({
        method:'POST',
        url:config.accounts_prod + '/token',
        headers:{ 
            'authorization': 'Basic testestestestest'
        },
        qs:{
            'grant_type':'password',
            'username':email,
            'password':password
        }
    }).then((response)=>{
        var X = response.body.access_token      
        cy.log("create session " + x)
        callback(response.body.access_token, user_id);

    })
}

var login = function (token,user_id) {
    var result = cy.request({
    method:'POST',
    url:config.ws_prod + '/login.pl',
    headers:{ 
        'authorization': token,
        'Content-Type' : 'application/x-www-form-urlencoded'
    },
    body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
    })
    return token
}



// then call first fn

createSession(email,password,user_id,login);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...