Algo estrangulado, esta no es una funcionalidad básica
Puede agregar un comparador personalizado como este:
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
};
}
};
}
);
};
En efecto, está definiendo un constructor para su matcher: es una función que devuelve un objeto matcher.
Incluya eso antes de 'arrancar'. Los comparadores básicos se cargan en el momento del arranque.
Su archivo html debería verse así:
<!-- 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>
Luego, en su boot.js, agregue la llamada para agregar los emparejadores después de que se haya definido jasmine pero antes de jasmine.getEnv (). Get env es en realidad una llamada de configuración (con un nombre un poco engañoso).
Los emparejadores se configuran en la llamada a setupCoreMatchers en el constructor Env.
/**
* ## Require & Instantiate
*
* Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference.
*/
window.jasmine = jasmineRequire.core(jasmineRequire);
yourGlobal.addExtraMatchers();
/**
* Since this is being run in a browser and the results should populate to an HTML page, require the HTML-specific Jasmine code, injecting the same reference.
*/
jasmineRequire.html(jasmine);
/**
* Create the Jasmine environment. This is used to run all specs in a project.
*/
var env = jasmine.getEnv();
Muestran otra forma de agregar comparadores personalizados en las pruebas de muestra, sin embargo, la forma en que funciona es recrear los comparadores antes de cada prueba usando un archivo beforeEach
. Eso parece bastante horrible, así que pensé en este enfoque.