Я пишу несколько тестов, управляемых объектами страниц, используя Protractor и Астролябия.
Jasmine используется для реализации спецификаций стиля describe
/it
.
Добавление пользовательских сопоставителей не будет работать с использованием this.addMatchers
(TypeError: Object #<Object> has no method 'toContainLowered'
), поэтому я использовал это руководство для их реализации.
Кажется, это работает, пока я не посмотрю внимательно на результаты моего тестового прогона:
$> grunt test:func
Running "test:func" (test) task
Running "shell:protractor" (shell) task
Using the selenium server at http://localhost:4444/wd/hub
..
Finished in 6.727 seconds
2 tests, 1 assertion, 0 failures
Вот мой код:
var loginPage = require('./../pages/loginPage');
describe('Login page', function () {
var ptor = loginPage.driver;
beforeEach(function () {
jasmine.Matchers.prototype.toContainLowered = function (expected) {
return this.actual.toLowerCase().indexOf(expected) > -1;
};
loginPage.go();
ptor.waitForAngular();
});
it('should display login page', function () {
expect(loginPage.currentUrl).toEqual(ptor.baseUrl);
});
it('should display an error when the username or password is incorrect', function() {
loginPage.login('bad', 'credentials');
ptor.waitForAngular();
expect(loginPage.lblError.getText()).toContainLowered('invalid username and/or password');
// expect(loginPage.lblError.getText()).toContain('Invalid Username and/or Password');
});
});
Если я раскомментирую последнюю строку и удалю сопоставитель toContainLowered
, я получу правильный вывод:
2 tests, 2 assertions, 0 failures
Мне очень трудно отлаживать этот код на основе обещаний, и любые попытки поставить console.log(this.actual.toLowerCase().indexOf(expected) > -1);
будут печатать false
, что сбивает с толку.
Я даже пытался заменить все определение функции только на return false;
. Который все равно ничего не делает. Наконец, я попытался передать без аргумента сопоставителю, который должен был выдать ошибку Invalid Argument Error или что-то в этом роде.
Как мне определить свои собственные сопоставители в Jasmine при использовании тестов Protractor/Astrolabe?