Um tanto estranho, esta não é uma funcionalidade básica
Você pode adicionar um matcher 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
};
}
};
}
);
};
Na verdade, você está definindo um construtor para seu matcher - é uma função que retorna um objeto matcher.
Inclua isso antes de 'inicializar'. Os matchers básicos são carregados no momento da inicialização.
Seu arquivo html deve ter a seguinte aparência:
<!-- 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>
Em seguida, em seu boot.js, adicione a chamada para adicionar os matchers após jasmine ter sido definido, mas antes de jasmine.getEnv (). Get env é, na verdade, uma chamada de configuração (com um nome um tanto enganador).
Os matchers são configurados na chamada para setupCoreMatchers no construtor 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();
Eles mostram outra maneira de adicionar correspondências customizadas nos testes de amostra; no entanto, a maneira como funciona é recriar os correspondências antes de cada teste usando um beforeEach
. Isso parece horrível, então pensei em usar essa abordagem.