Как исключить циклические зависимости в Javascript при написании автоматических тестов? - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь охватить некоторые тесты автоматизации с использованием WebdriverIo, javascript, node.js, но я столкнулся с проблемой, как я понимаю, которая называется круговые зависимости .

У меня есть случай, когда я иду между классами a до b , затем возвращаюсь к классу А.

Нужно разделить эти два раздела (шаблон объекта страницы), каждый из они содержат свои собственные методы, действия, селекторы. Когда я возвращаю страницу NewPopup, я хочу заполнить некоторые поля и после нажатия «Добавить» вернуть новый экземпляр предыдущего класса, потому что некоторые новые элементы появляются в таблице. Затем выполните некоторые новые действия в MainSection, такие как редактирование созданного всплывающего окна, удалите его и т. Д. c.

class MainSection {
    addSomething() {
        $('').click();
        return new NewPopup();
    }

    editSomething() {
        $('').click();
        return new NewPopup();
    }
}

module.exports = MainSection;

Новое всплывающее окно содержит некоторые действия, которые добавят новую строку в столбец.

const MainSection = require('./main.section');

class NewPopup {
    setLabel(label) {
        $('#label').setValue(label);
        return this;
    }

    add() {
        $('button=Add').click();
        return new MainSection();
    }

    cancel() {
        $('button=Cancel').click();
        return new MainSection();
    }
}

module.exports = AddRenditionPopup;

Поэтому в том случае, когда я хочу вернуться к новому MainSection (), возникает ошибка:

TypeError: MainSection is not a constructor

Если я использую module.exports = new MainSection(), а затем возвращаю только MainSection, то я не могу использовать методы из возвращенного класса, потому что получают ошибку: TypeError: this.mainSection.editSomething is not a function

Я совершенно новичок в js и впервые столкнулся с термином Круговые зависимости. У кого-нибудь есть идеи, как это опустить или реализовать какое-то другое решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...