Невозможно решить «Ошибка: каждый ключ должен быть числом строки; получил неопределенный» в транспортире с использованием Typescript - PullRequest
1 голос
/ 02 октября 2019

enter image description here Мой файл данных выглядит следующим образом. Проходит только первый набор, но вторая итерация, он не проходит по адресу электронной почты

export const userTestData = {

    scenarios: {

        scenario1: {
            firstName: 'John',
            lastName: 'Doe',
            city: 'Indianapolis',
            password: 'MyApp@123',
            emailAddress: 'Test1@gmail.com',
            addressLine1: '52nd BroadRipple Street',
            zipCode: 43464
        },

        scenario2: {
            firstName: 'Mark',
            lastName: 'Baker',
            city: 'Westfield',
            password: 'Test@123',
            emailAdd: 'Test1@gmail.com',
            addressLine1: '12412 Ballantyne Street',
            zipCode: 23053
        }
    }
};

Любая помощь очень ценится. Не уверен, почему он выдает ошибку только для 2-й итерации. На первой итерации все значения приняты и тест пройден

My Spec File

import {browser} from 'protractor';import {LoginPageEntities} из '../pageObjects/loginLogoutWorkflow/LoginPageEntities.po';import {CustomLogger} из '../../utils/logging';импортировать {после} из 'jasmine-ожидаемого / dist / asymmetricMatchersByName';import {LogoutPageEntitiesPo} из '../pageObjects/loginLogoutWorkflow/LogoutPageEntities.po';import {main} из '@ angular / compiler-cli / src / main';import {ForgotPasswordPo} из '../pageObjects/loginLogoutWorkflow/ForgotPassword.po';import {NewUserRegistrationPo} из '../pageObjects/loginLogoutWorkflow/NewUserRegistration.po';импорт {использование} от 'провайдера данных жасмина';import {userTestData} из '../globalData/userData';

const using = require('jasmine-data-provider');

describe('Test OnlineApp', () => {
const logger = new CustomLogger('LoginLogoutFunctionality');
let mainPage: LoginPageEntities;
let userRegisterPage: NewUserRegistrationPo;
beforeAll(async() => {
    logger.debug('Before All');
});
afterAll(async () => {
    logger.debug('After All');
});

beforeEach(async () => {
    mainPage = new LoginPageEntities();
    userRegisterPage = new NewUserRegistrationPo();
});


afterEach(async () => logger.debug('After Each'));

describe('example test', () => {
    using(userTestData.scenarios, async (data) => {
        xit('data provider tests',  async () => {
            browser.waitForAngularEnabled(false);
            const expectedValue = 'New User';
            await mainPage.launchURL();
            await mainPage.getHomePageTitle();
            await mainPage.clickLoginMenu();
            await mainPage.clickSelectedLink('New User?', 'New User');
            await userRegisterPage.setFirstName(data.firstName);
            await userRegisterPage.setLastName(data.lastName);
            await userRegisterPage.setNewEmailAddress(data.emailAddress);
            await userRegisterPage.setConfirmEmailAddress(data.emailAddress);
            await userRegisterPage.setNewUserPassword(data.password);
            await userRegisterPage.setConfirmPassword(data.password);
            await userRegisterPage.setAddressLine1(data.addressLine1);
            await userRegisterPage.setCity(data.city);
            await userRegisterPage.setZipCode(data.zipCode);
        });
    });
});

});

метод sendKeys

 public async setNewEmailAddress(username: any) {
        const expectedEmailText = 'email';
        const emailField = await element(by.css('input[aria-label*=\'enter an email address\']'));
        await browser.wait(until.presenceOf(emailField), TIMEOUT_MILLIS,
            'New email field never appeared.');
        await emailField.clear();
        await emailField.sendKeys(username);
       // const usernameText =  emailField.getAttribute('type');
        await emailField.getAttribute('type').then( (text) => {
            logger.info('Getting email text:' + text);
            expect(text).toEqual(expectedEmailText);

        });
  }

1 Ответ

0 голосов
/ 03 октября 2019

Посмотрите на пример, как использовать поставщик данных из object в описании npm к пакету

Вы должны переписать свой объект данных как:

export const userTestData = {

    scenarios: {

        'scenario1': {
            firstName: 'John',
            lastName: 'Doe',
            city: 'Indianapolis',
            password: 'MyApp@123',
            emailAddress: 'Test1@gmail.com',
            addressLine1: '52nd BroadRipple Street',
            zipCode: 43464
        },

        'scenario2': {
            firstName: 'Mark',
            lastName: 'Baker',
            city: 'Westfield',
            password: 'Test@123',
            emailAdd: 'Test1@gmail.com',
            addressLine1: '12412 Ballantyne Street',
            zipCode: 23053
        }
    }
};
...