Использую версию 5.1.0
Хочу сделать проверку на получение текста
У меня (не) получается сделать expect
Подскажите как решить данную проблему
consumer.When(/^значение в текстовом поле "([^"]*)" равно "([^"]*)"$/, function (field, value: string) {
let input = element(by.model(value)).getText();
expect(input).toBe('Foo123');
});
В комплекте с cucumberJS не идет никакой библиотеки для assertions. Вам нужно установить самостоятельно.
Например:
npm install --save chai
Кроме того, поскольку в протракторе практически все возвращает промисы - вам нужно научится работать с этим в ваших assertions - Chai
npm install --save chai-as-promised
Или используя async/await
Подключаем в код:
let chai = require("chai");
let chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
let expect = chai.expect;
consumer.When(/^значение в текстовом поле "([^"]*)" равно "([^"]*)"$/, function (field, value: string) {
let input = element(by.model(value)).getText();
expect(input).to.eventually.equal("Foo123");
});
По-хорошему, выше указанный пример должен быть в Then(), вот вариант с обычным ассертом ):
consumer.Then(/^значение в текстовом поле "([^"]*)" равно "([^"]*)"$/, function (field, value: string) {
return element(by.model(value)).getText().then((res) => {
assert.equal(input, "Foo123");
})
});
Это альтернативный вариант. Не самый лучший, но понятный.
Согласен. Вообще для себя я остановился в итоге на async/await:
consumer.Then(/^значение в текстовом поле "([^"]*)" равно "([^"]*)"$/, async function (field, value: string) {
expect(await element(by.model(value)).getText()).to.equal("Foo123")
});