Мы добавили пользовательский 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()
внутри конфигурации транспортира, у меня есть микро-депрессия и сильное чувство, что это нехорошее место для определения совпадений.
Вопрос:
Есть ли лучший способ или место для определения пользовательских совпадений?