Мы добавили пользовательский jasmine-коннектор toHaveClass, и для его работы нам пришлось добавить его в beforeEach() (с помощью в этом разделе).
И, чтобы следовать принципу DRY и избегать повторения определения matcher в каждом beforeEach() в спецификациях, где toHaveClass необходимо, мы добавили блок beforeEach() прямо в onPrepare():
onPrepare: function () {
var jasmineReporters = require("jasmine-reporters");
require("jasmine-expect");
// ...
// custom matchers
beforeEach(function() {
jasmine.addMatchers({
toHaveClass: function() {
return {
compare: function(actual, expected) {
return {
pass: actual.getAttribute("class").then(function(classes) {
return classes.split(" ").indexOf(expected) !== -1;
})
};
}
};
}
});
});
},
На самом деле это работает, но каждый раз, когда я вижу блок beforeEach() внутри конфигурации транспортира, у меня есть микро-депрессия и сильное чувство, что это нехорошее место для определения совпадений.
Вопрос:
Есть ли лучший способ или место для определения пользовательских совпадений?