как передать значение в теле API в транспортире при запросе API - PullRequest
0 голосов
/ 28 мая 2019

Я хочу передать значение в теле запроса API.Я попробовал приведенный ниже код для этого

    var options = { method: 'POST',
        url: 'https://ssgpreprod.serviceurl.in/gonogo-api/atm/tw/cro-approval',
        headers:
            { 'Postman-Token': '9d6a0ad1-c3a1-402f-b845-b6416f49df6b',
                'cache-control': 'no-cache',
                'Content-Type': 'application/json' },
        body:
            { oHeader:
                { sReqType: 'application/json',
                    sAppSource: 'WEB 2.02.01',
                    sSourceID: 'GONOGO_HDBFS',
                    sAppID: 610961419000670,
                    dtSubmit: '',
                    sCroId: 'HDB_TW_CRO@cell.com',
                    sDsaId: 'default',
                    sInstID: 4019,
                    sUserName: 'CHDBTWCRO',
                    sProduct: 'TW',
                    sDealerId: '61096' },
                sRefID:testData.twPreIpa.twReferenceId,
                sAppStat: testData.twCroDetails.twCroDecision,
                aCroJustification: [ { sRemark: testData.twCroDetails.twRemark, sSubTo: testData.twCroDetails.twSubjectTo} ],
                bApprAmtExist: true,
                dApprAmt: testData.twApplyDetails.twLoanAmount,
                dItrRt: testData.twCroDetails.twRoi,
                dLtv: testData.twCroDetails.twLtv,
                aDedupeRefID: [] },
        json: true };

    request(options, function (error, response, body) {
        if (error) throw new Error(error);
        browser.logger.info(JSON.stringify(body));
        browser.logger.info(JSON.stringify(response));
        browser.logger.info('status code is : ' + response.statusCode);
        expect(response.statusCode).toBe(200).then(function () {
            browser.logger.info('case is approved');
            this.logOut(testData);
        })
    });

Я передаю значение из файла xlsx, то есть testData.twPreIpa.twReferenceId, но я получаю код состояния 422 и вывод ниже

[2019-05-2815: 42: 10.403] [INFO]: - {"title": "Conversion Failed", "status": 422, "detail": "Возможно, отправленное вами содержимое искажено."}

Кроме того, когда я добавляю - browser.logger.info («утверждено»);Приведенные выше параметры var выводятся на консоль .. но когда я добавляю - browser.logger.info (testData.twPreIpa.twReferenceId);

Это дает мне ошибку .. Отображается вывод -

Ошибка:Невозможно прочитать свойство 'twReferenceId' из неопределенного TypeError: Невозможно прочитать свойство 'twReferenceId' из неопределенного

1 Ответ

0 голосов
/ 29 мая 2019

Хотя это может и не дать прямого ответа на ваш вопрос, оно должно быть вам полезно.Я работал над тем же фреймворком, на который (как я полагаю) похож ваш, с некоторыми API и некоторыми валидациями пользовательского интерфейса.

У меня был отдельный класс для вызовов API, который возвращал какое-то значение, иногда весь текст ответа.Я позволил себе возможность передавать любое тело, в котором я нуждался, в качестве параметра.

Это пример подхода, который я выбрал.

module.exports = class Endpoints {

    addSomethingToUser(bearerToken, userId, JSONbody) {
        //Function will preform a POST request and return the status code if successful
        //Else if will return the body of the response

        let endpoint = 'http://myApp.com:9090/api/users/' + userId;

        return new Promise((resolve, reject) => {
            let options = {
                method: "POST",
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': 'Bearer ' + token,
                },
                body: JSON.stringify(JSONbody),
            };

            request(
                endpoint,
                options ,
                function (error, response, body) {
                    if (!error && (response.statusCode >= 200 && response.statusCode < 300)) {
                        resolve(response.statusCode);
                    } else {
                        console.log('error:', error, response && response.statusCode);
                        reject(JSON.stringify(response, undefined, 2));
                    };
                }
            );
        });
    };
}

Это называется как

let apiCallsFile = require('../apiCalls/restCalls');
let apiCalls = new apiCallsFile();

it('simple test', async function(){
    let requiredBody = {
        "NAME": "Test Name",
        "GENDER": "MALE",
    };

    let apiResult = await apiCalls.addSomethingToUser(bearerToken, userId, requiredBody );
    expect(apiResult).toBe('201');
}

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

...