Жасмин: возвращение прототипа методом после юнит-теста - PullRequest
2 голосов
/ 09 мая 2011

Чтобы протестировать определенную часть моего кода, мне нужно смоделировать метод-прототип, чтобы убедиться, что он вызывается.Код выглядит примерно так:

SomeObject.prototype.foo = jasmine.createSpy()
var so = SomeObject()
so.bar()
expect(SomeObject.prototype.foo).toHaveBeenCalled()

Это работает, но изменяет состояние SomeObject, которое мне не нужно.Так что мне было интересно, есть ли способ вернуть состояние prototype.foo после того, как я закончу?Я думал, может быть, о создании копии SomeObject.Я взглянул на jQuery.extend, но я не уверен, смогу ли я использовать это для копирования функций конструктора.

Ответы [ 2 ]

5 голосов
/ 18 мая 2011

Два варианта.Желательно шпионить за экземпляром:

spyOn(so, 'foo');

Или, если вы настаиваете, что хотите убедиться, что прототип вызывается:

spyOn(SomeObject.prototype, 'foo');

Жасмин уничтожает всех шпионов после каждой спецификации.

0 голосов
/ 09 мая 2011
delete SomeObject.prototype.foo;

в tearDown или только в конце конкретного теста.

...