В JSTestDriver имеется метод
assertInstanceOf(), используемый для проверки соответсвия объекта указанному классу.
Подскажите, пожалуйста, как сделать ананлогичную проверку в Jasmine ?
Забегая вперед, в Jasmine имеется проверка типа:
expect(someObject.Method).toHaveBeenCalledWith(jasmine.any(String));
Тем не менее, при попытке сравнить экземпляр класса и класс:
expect(someObject).toHaveBeenCalledWith(jasmine.any(objectMain));
выдается ошибка:
Error: Expected a spy, but got { <поля класса> }.
Помимо этого, есть
custom_matcher.js, но не могу разобраться, как, применяя его, сделать проверку.
UPD:
Благодарю за ответ.
Только недавно смог вернуться к написанию данного matcher'а.
Прочитал про создание собственных matcher'ов.
Если верно понял, то в приведенном листинге код корректный. Тем не менее, при использовании:
function forCheck() {
tempVar = 0;
}
var objectTemp = new forCheck();
describe('DeferredJasmine', function(){
beforeEach(function() {
this.addMatchers({
toBeInstanceOf: function(expectedInstance) {
var actual = this.actual;
var notText = this.isNot ? " not" : "";
this.message = function() {
return "Expected " + actual.constructor.name + notText + " is instance of " + expectedInstance.name;
};
return actual instanceof expectedInstance;
}
});
});
it("checks type name", function() {
expect(objectTemp).toBeInstanceOf(forCheck);
});
Отображается ошибка:
"TypeError: undefined is not a function at Object.
TypeError: undefined is not a function at Object. "
Первая ошибка указывает на "this.addMatchers", вторая на "toBeInstanceOf(objectTempDub)"
Тем не менее, если использовать просто:
it("checks type name", function() {
expect(objectTemp instanceof forCheck).toBe(true);
}
то проверка проходит.
Подскажите, пожалуйста, в чем причина ошибка?
UPD_2:
Исправил код в первом
UPD.
Уже использую короткий вариант
expect(objectTemp instanceof forCheck).toBe(true);
но интересна причина ошибки в первоначальном варианте.