Biraz tuhaf, bu temel işlev değil
Bunun gibi özel bir eşleştirici ekleyebilirsiniz:
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
};
}
};
}
);
};
Aslında eşleştiriciniz için bir kurucu tanımlıyorsunuz - bu bir eşleştirme nesnesi döndüren bir işlev.
Bunu "başlatmadan" önce ekleyin. Temel eşleştiriciler, önyükleme sırasında yüklenir.
Html dosyanız şöyle görünmelidir:
<!-- 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>
Daha sonra boot.js dosyanıza yasemin tanımlandıktan sonra ancak yasemin.getEnv () 'den önce eşleştiricileri eklemek için çağrıyı ekleyin. Get env aslında (biraz yanıltıcı bir şekilde adlandırılmış) bir kurulum çağrısıdır.
Eşleştiriciler, Env yapıcısındaki setupCoreMatchers çağrısında kurulumu alır.
window.jasmine = jasmineRequire.core(jasmineRequire);
yourGlobal.addExtraMatchers();
jasmineRequire.html(jasmine);
var env = jasmine.getEnv();
Numune testlerine özel eşleştiriciler eklemenin başka bir yolunu gösterirler, ancak bunun çalışma şekli, her bir testten önce bir beforeEach
. Bu oldukça korkunç görünüyor, bu yüzden onun yerine bu yaklaşımı tercih edeceğimi düşündüm.