Oto test braku:Nieudane oczekiwanie: "Oczekiwano [], aby była pustą tablicą".
describe("Checking errors", function() {
var scope = {};
beforeEach(function() {
browser.get("/#endpoint");
browser.waitForAngular();
scope.page = new MyPage();
});
it("should not show any errors", function() {
expect(scope.page.errors).toBeEmptyArray();
});
});
gdzie MyPage
jest sprawdzonym Strona obiektu:
var MyPage = function() {
this.errors = element.all(by.css("div.error-block b.error"))
.filter(function (elm) {
return elm.isDisplayed().then(function (value) {
return value;
});
})
.map(function (elm) {
return elm.getText();
});
};
module.exports = MyPage;
gdzie errors
ma być tablicą tekstów widocznych błędów znajdujących się na stronie.
Oto błąd kupujemy:
Failures:
1) Checking errors should not show any errors
Message:
Expected [ ] to be empty array.
Stacktrace:
Error: Failed expectation
FYI, toBeEmptyArray()
dopasowujący pochodzi jasmine-matchers
trzecie.
Próbowałem wydrukować wartości od scope.page.errors
ten sposób:
scope.page.errors.then(function (errors) {
console.log(errors);
});
I to jest drukowany jako []
. Array.isArray(errors)
zwraca true
.
Z tego co widzę, scope.page.errors
jest pustą tablicą, ale oczekiwanie nie powiedzie się. Czego mi brakuje?
Co otrzymasz, jeśli log Array.isArray (błędy)? – Ryan
@Ryan nie spodziewał się tego, ale wypisuje 'true'..weird. Dzięki. – alecxe
Czy 'oczekiwać (scope.page.errors.length) .toBe (0);' działa? Być może napotkasz problem z zakresów tworzonych przez webdriver (takich jak ramki na stronie), które mają własną definicję "tablicy". Zobacz http://stackoverflow.com/a/2265999/960524 (więc może to być błąd w metodzie 'toBeEmptyArray()' - prawdopodobnie kończy się niepowodzeniem w części sprawdzającej "array").) –