Слежка за конструктором с помощью Jasmine

Я использую Jasmine, чтобы проверить, создаются ли определенные объекты и вызываются ли для них методы.

У меня есть виджет jQuery, который создает объекты flipcounter и вызывает для них метод setValue. Код для флип-счетчика находится здесь: https://bitbucket.org/cnanney/apple-style-flip-counter/src/13fd00129a41/js/flipcounter.js

Флип-счетчики создаются с использованием:

var myFlipCounter = new flipCounter("counter", {inc: 23, pace: 500});

I хотите проверить, созданы ли счетчики и для них вызывается метод setValue. Моя проблема в том, как мне шпионить за этими объектами еще до их создания? Могу ли я шпионить за конструктором и возвращать фальшивые объекты? Пример кода действительно поможет. Спасибо за вашу помощь! :)

Обновление:

Я пробовал шпионить за flipCounter вот так:

myStub = jasmine.createSpy('myStub');
spyOn(window, 'flipCounter').andReturn(myStub);

//expectation
expect(window.flipCounter).toHaveBeenCalled();

Затем тестирование вызова setValue с помощью flipCounter:

spyOn(myStub, 'setValue');

//expectation
expect(myStub.setValue).toHaveBeenCalled();

первый тест для инициализации flipCounter подходит, но для тестирования setValue вызов, все, что я получаю, это ошибка «метод setValue () не существует». Правильно ли я делаю это? Спасибо!

60
задан gerky 19 February 2012 в 15:21
поделиться