Как ни странно, это не базовая функциональность
Вы можете добавить настраиваемый сопоставитель следующим образом:
JasmineExtensions.js
yourGlobal.addExtraMatchers = function () {
var addMatcher = function (name, func) {
func.name = name;
jasmine.matchers[name] = func;
};
addMatcher("toBeGreaterThanOrEqualTo", function () {
return {
compare: function (actual, expected) {
return {
pass: actual >= expected
};
}
};
}
);
};
По сути, вы определяете конструктор для своего сопоставителя - это функция, возвращающая объект сопоставления.
Включите это перед "загрузкой". Базовые сопоставители загружаются во время загрузки.
Ваш html-файл должен выглядеть так:
<!-- jasmine test framework-->
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script>
<!-- custom matchers -->
<script type="text/javascript" src="Tests/JasmineExtensions.js"></script>
<!-- initialisation-->
<script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script>
Затем в вашем boot.js добавьте вызов для добавления сопоставителей после определения жасмина, но до jasmine.getEnv (). Get env на самом деле является установочным вызовом (название которого несколько ошибочно).
Сопоставители получают настройку при вызове setupCoreMatchers в конструкторе Env.
window.jasmine = jasmineRequire.core(jasmineRequire);
yourGlobal.addExtraMatchers();
jasmineRequire.html(jasmine);
var env = jasmine.getEnv();
Они показывают другой способ добавления настраиваемых сопоставителей в образцы тестов, однако способ его работы заключается в воссоздании сопоставителей перед каждым тестом с использованием файла beforeEach
. Это кажется довольно ужасным, поэтому я решил использовать этот подход.