Все;Как работает пример жасмина-шпиона
Я только начал обучение Жасмин (версия 2.0.3), когда я попал в шпионам разделе, первый пример смущало меня:
describe("A spy", function() {
var foo, bar = null;
beforeEach(function() {
foo = {
setBar: function(value) {
bar = value;
}
};
spyOn(foo, 'setBar');
foo.setBar(123);
foo.setBar(456, 'another param');
});
it("tracks that the spy was called", function() {
expect(foo.setBar).toHaveBeenCalled();
});
it("tracks all the arguments of its calls", function() {
expect(foo.setBar).toHaveBeenCalledWith(123);
expect(foo.setBar).toHaveBeenCalledWith(456, 'another param');
});
it("stops all execution on a function", function() {
expect(bar).toBeNull();
});
});
Интересно, если кто-нибудь может объяснить, почему функция setBar не влияет на панель, определенную внутри описывающего блока? Как шпионы Жасмина справляются с этим?
Thanks
Спасибо, что меня больше всего интересует, как добиться этого от Jasmine, не выполняя действительную функцию и не влияя на переменные? В основном, как доза копирует все в свою изолированную область (если мое понимание об этом правильно)? Не могли бы вы дать мне более подробную информацию об этом? – Kuan
Позвольте мне уточнить дополнительную информацию. –
Спасибо, я прочитал http://www.tutorialspoint.com/design_pattern/proxy_pattern.htm Из моего понимания, в основном используется внутренний объект для делегирования задачи. Но мне любопытно, как связать мой пример с этим шаблоном. – Kuan