Expect () не выполняет сравнение при использовании BDD - PullRequest
0 голосов
/ 30 августа 2018

Я работаю с транспортиром 5.4.0 и огурцом.

Файл protractor.conf.js:

global.expect = require('chai').expect;
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub', // This is targetting your local running instance of the selenium webdriver

    specs: [
        '../Features/UI_Tests.feature'
    ],

    capabilities: {
        browserName: 'chrome' // You can use any browser you want. On a CI environment you're going to want to use PhantomJS
    },

    framework: 'custom', //We need this line to use the cucumber framework

    frameworkPath: require.resolve('protractor-cucumber-framework'), // Here it is

    cucumberOpts: {
        //format:  'pretty',
        require: '../Features/step_definitions/my_steps.js', // This is where we'll be writing our actual tests
        // tags: ['@basic'],
        strict: true,
        plugin:"json"
    },
    resultJsonOutputFile:'./testResults.json', //output file path to store the final results in .json format
    params: {
        env: {
            hostname: 'http://0.0.0.0:8000' // Whatever the address of your app is
        }
    }
};

Я определил этот сценарий на нескольких примерах:

Scenario Outline: dropdown boxes appear and work as expected.
    When go to "URL"
    Then application is running
    When click <box>
    Then <option> is present in <box>

    Examples:
      |box| option|
      |templateSelection| Apparent Energy |
      |templateDeliveryPathSelection| Email |
      |templateLocaleSelection| English |

Я использую этот фрагмент кода, чтобы убедиться, что текст выпадающего списка совпадает с текстом столбца параметров:

checkDropdown: function (value,dropdown) {
        var text = element(by.id(dropdown)).getText();
        expect(text).to.eventually.equal(value);
    },

Кажется, он работает должным образом, потому что вывод сообщает, что все сценарии прошли. Однако если мы изменим какое-либо из значений в столбце «option», чтобы оно не сработало, выходные данные будут одинаковыми, все сценарии пройдут. Почему?

Заранее спасибо.

1 Ответ

0 голосов
/ 04 сентября 2018

Попробуйте:

checkDropdown: function (value,dropdown) {
        var text = element(by.id(dropdown)).getText();
        return expect(text).to.eventually.equal(value);
}

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

Я настоятельно рекомендую использовать https://github.com/canvaspixels/cucumber-protractor, если вы используете эти две технологии, чтобы сэкономить тонны шаблонной информации и усилий. Вы можете сохранить существующие тесты и постепенно мигрировать.

Здесь есть демонстрационное видео: https://www.youtube.com/watch?v=5vuYL4nxMXs

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