Hier ist der fehlerhafte Test:Fehlgeschlagene Erwartung: "Erwartet [], um ein leeres Array zu sein."
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();
});
});
wo MyPage
ist ein Seite Objekt:
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;
wo errors
sollten eine Reihe von sichtbaren Fehlertexten auf einer Seite zu finden sein. Hier
ist der Fehler, den wir bekommen:
Failures:
1) Checking errors should not show any errors
Message:
Expected [ ] to be empty array.
Stacktrace:
Error: Failed expectation
FYI, toBeEmptyArray()
Matcher kommt von jasmine-matchers
Dritter.
Ich habe versucht, auf diese Weise den Wert von scope.page.errors
auszudrucken:
scope.page.errors.then(function (errors) {
console.log(errors);
});
Und es wird als []
ausgedruckt. Array.isArray(errors)
gibt true
zurück.
Von was ich sehe, scope.page.errors
ist ein leeres Array, aber die Erwartung schlägt fehl. Was ich vermisse?
Was bekommen Sie, wenn Sie Array.isArray log (Fehler)? – Ryan
@Ryan hat das nicht erwartet, aber es druckt 'wahr'..weird. Vielen Dank. – alecxe
Funktioniert 'expect (scope.page.errors.length) .toBe (0);'? Möglicherweise tritt ein Problem mit den Scopes auf, die vom Webdriver erstellt werden (wie Iframes auf einer Seite), die ihre eigene "Array" -Definition haben. Siehe http://StackOverflow.com/a/2265999/960524 (das könnte also ein Fehler in der 'toBeEmptyArray()' Methode sein - es ist wahrscheinlich fehlgeschlagen der "Array" -Ness Teil der Prüfung.) –