Я создал полный упрощенный пример, который реплицирует проблему, которую я получаю.
function TestObj() {
var self = this;
self.getStuff = function(aString, callback) {
// TODO
}
}
describe("server communications", function() {
it("it calls the server", function() {
var obj = new TestObj();
obj.getStuff = jasmine.createSpy();
// swap the above line for this and it makes no difference
// spyOn(obj, "getStuff");
var functionVar = function() {
};
obj.getStuff("hello", functionVar);
expect(obj.getStuff).toHaveBeenCalledWith(
[ "hello", jasmine.any(Function) ]);
});
});
Вместо прогона unit test, я получаю следующий вывод:
Ожидаемый шпион, с которым были вызваны: [['hello', < jasmine.any(function Function() {[собственный код]}) > ]] но был вызван с: [['hello', Function]]
Почему это не признает, что функции, которые я передаю (функция() {}), фактически являются функциями? Что это за собственный код, который он ожидает? У кого-нибудь еще была проблема с jasmine.any(Function)? Thankyou!
EDITED
Я попытался использовать spyOn вместо jasmine.createSpy(), и это не имеет никакого значения. Я попробовал только один аргумент, и он работает. Ввод первого аргумента строки разбивает jasmine.any(Function) - любые идеи?