Невозможно разрешить Ошибка: каждый ключ должен быть числовой строкой; получил undefined в транспортире, используя Typescript

введите здесь описание изображения Мой файл данных выглядит так. Проходит только первый набор, но вторая итерация не работает по адресу электронной почты.

export const userTestData = {

    scenarios: {

        scenario1: {
            firstName: 'John',
            lastName: 'Doe',
            city: 'Indianapolis',
            password: 'MyApp@123',
            emailAddress: '[email protected]',
            addressLine1: '52nd BroadRipple Street',
            zipCode: 43464
        },

        scenario2: {
            firstName: 'Mark',
            lastName: 'Baker',
            city: 'Westfield',
            password: 'Test@123',
            emailAdd: '[email protected]',
            addressLine1: '12412 Ballantyne Street',
            zipCode: 23053
        }
    }
};

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

Мой файл спецификации

импортировать {browser} из "транспортира"; импортировать {LoginPageEntities} из '../pageObjects/loginLogoutWorkflow/LoginPageEntities.po'; импортировать {CustomLogger} из '../../utils/logging'; импортировать {после} из 'jasmine-expect/dist/asymmetricMatchersByName'; импортировать {LogoutPageEntitiesPo} из '../pageObjects/loginLogoutWorkflow/LogoutPageEntities.po'; импортировать {main} из '@angular/compiler-cli/src/main'; импортировать {ForgotPasswordPo} из '../pageObjects/loginLogoutWorkflow/ForgotPassword.po'; импортировать {NewUserRegistrationPo} из '../pageObjects/loginLogoutWorkflow/NewUserRegistration.po'; импортировать {используя} из «jasmine-data-provider»; импортировать {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);

        });
  }

person Panee S    schedule 02.10.2019    source источник
comment
было бы полезно увидеть полную спецификацию и стек ошибок   -  person Sergey Pleshakov    schedule 02.10.2019
comment
Привет, Сергей, я прикрепил фрагмент стека ошибок, а также предоставил файл спецификации. Спасибо   -  person Panee S    schedule 03.10.2019


Ответы (1)


Взгляните на пример использования поставщика данных из object в описании npm к пакету< /а>

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

export const userTestData = {

    scenarios: {

        'scenario1': {
            firstName: 'John',
            lastName: 'Doe',
            city: 'Indianapolis',
            password: 'MyApp@123',
            emailAddress: '[email protected]',
            addressLine1: '52nd BroadRipple Street',
            zipCode: 43464
        },

        'scenario2': {
            firstName: 'Mark',
            lastName: 'Baker',
            city: 'Westfield',
            password: 'Test@123',
            emailAdd: '[email protected]',
            addressLine1: '12412 Ballantyne Street',
            zipCode: 23053
        }
    }
};
person Oleksii    schedule 03.10.2019
comment
Большое спасибо! Алексей. Я обновил файл, как указано выше. Но проблема заключалась в несоответствии имени электронной почты (адрес электронной почты и адрес электронной почты), которое я исправил. Принимаю ваш ответ, так как он работает! - person Panee S; 03.10.2019