Jak powiedział w komentarzach, choć początkowo używać map
, zmniejszyć pozwoli Ci zrobić to, czego potrzebujesz, w tym kasty przynajmniej sprawia dużo więcej sensu:
protractor.promise.all([text1, text2, text3]).then(function (values) {
expect(
values.reduce(function(p, v) {
return v.match(/expression/) || p;
}, false)
).toBe(true);
});
lub pisząc to samo , ale przy użyciu strzałek ES6 funkcje:
protractor.promise.all([text1, text2, text3]).then(function(values) {
exptect(
values.reduce((p, v) => v.match(/expression/) || p, false)
).toBe(true);
});
Oba zrobić to samo, callback zmniejszyć domyślnie false, dopóki wyrażenie v.match
wartość true.
Jestem zakładając, jest to oczywiste dla większości ludzi, ale pomyślałem, że zapewniają zarówno składni i wyjaśnień na przyszłość
Może to rozwiązanie może być zoptymalizowany nieco więcej, aby zatrzymać dopasowanie wzór po jednym meczu stwierdzono:
protractor.promise.all([text1, text2, text3]).then(function (values) {
expect(
values.reduce(function(p, v) {
return p || !!v.match(/expression/);
}, false)
).toBe(true);
});
Wszystko zrobiłem było użyć bieżącej wartości redukcji jako domyślne (kiedyś, że został ustawiony na true, to nie ma sensu testowania dowolny inny ciąg znaków). Aby upewnić się, że v.match
jest wartością boolowską zamiast tablicą, użyłem tylko !!v.match()
. Ta część jest opcjonalna. W ES6, samo wygląda następująco:
protractor.promise.all([text1, text2, text3]).then(function(values) {
exptect(
values.reduce((p, v) => p || !!v.match(/expression/), false)
).toBe(true);
});
To może lepiej z dużymi zbiorami danych (z uwzględnieniem połączeń match
zatrzymać raz pierwszy mecz został znaleziony, w przeciwieństwie do v.match
miano za każdym razem).
Dlaczego nie wystarczy użyć zmiennej ('x = false;') i 'values.map (function (obj) {x = v.match (/ wyrażenie /) || x; }); 'a następnie po prostu mieć' expected (x) .toBe (true); '? –
Co jest nie tak z 'expect (values.some (function (i) {return /expression/.match(i);)). ToBe (true);'? – haim770
Wygląda na to, że niestandardowy szablon matcher może być rozwiązaniem: http : //jasmine.github.io/2.0/custom_matcher.html –