Я пытаюсь проверить, изменился ли текущий URL-адрес страницы после нажатия кнопки отправки на правильный URL-адрес. Я пытался сделать это разными способами, которые нашел в сети, но ничего не получалось. Иногда проблема заключается в том, что невозможно выполнить равенство для «объекта url» и «строки», а иногда и для чего-то еще. Одно, конечно, ошибка при запуске теста. Вы можете помочь мне? Спасибо.
Вот мой stepdefinition.js
expect(browser.getCurrentUrl()).to.equal("https://myurl.com/eng/homepage.html");
Вот моя ошибка:
E/launcher - expected { Object (flow_, stack_, ...) } to equal 'https://myurl.com/eng/homepage.html'
[15:34:28] E / launcher - AssertionError: ожидалось, что {Object (flow_, stack_, ...)} будет равно 'https://myurl.com/eng/homepage.html'
Я добавил это по вопросу
Добавляем это сюда. Некоторое время назад я ответил на аналогичный вопрос о Chai с TypeScript. stackoverflow.com/questions/42839202/…



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте сделать:
expect(browser.getCurrentUrl()).toEqual("https://myurl.com/eng/homepage.html");
Привет, @BlueScoreMan, спасибо за твой ответ. К сожалению, у меня есть это сообщение об ошибке: E / launcher - Недопустимое свойство Chai: toEqual. Вы имели в виду "равный"? [16:02:59] E / launcher - Ошибка: недопустимое свойство Chai: toEqual. Вы имели в виду "равный"?
Он использовал встроенный API утверждений Jasmine (который требует написания тестового примера от Jamsine). Но из вашего данного кода кажется, что вы используете chai как libaray утверждения.
browser.getCurrentUrl () возвращает обещание. Вам нужно будет решить эту проблему с помощью .then (), как показано ниже:
Опция 1) Используйте только chai
// protractor conf.js
onPrepare: function() {
var chai = require('chai'),
chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
global.expect = chai.expect;
// make `expect`as global, so you can use it anywhere is your code
}
browser.getCurrentUrl().then(function(currentUrl){
expect(currentUrl).to.equal("https://myurl.com/eng/homepage.html");
})
Вариант 2) Используйте chai и chai-as-promised вместе:
// protractor conf.js
onPrepare: function() {
var chai = require('chai'),
chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
global.expect = chai.expect;
// make `expect`as global, so you can use it anywhere is your code
}
expect(browser.getCurrentUrl()).to.eventually
.equal("https://myurl.com/eng/homepage.html");
Avinashs15 спасибо за ответ. Даже в этом случае он возвращает мне ошибку: E / launcher - Невозможно прочитать свойство «равно» из undefined [16:42:38] E / launcher - TypeError: Невозможно прочитать свойство «равно» из undefined Эта ошибка относится к строка: "currentUrl.to.equal (" myurl.com/eng/homepage.html "); ", где currentUrl не определено
@Spicchio попробуйте использовать expect(currentUrl).to.equal('whatever url you're using');
Учитывая сообщение об ошибке.