1

$.proxy(this, 'methodName')オブジェクトのメソッドを DOM イベントのイベント ハンドラーとして使用しています。

spyOnテストに関しては、コールバックが発生するかどうかを監視するためにJasmine を使用したいと思います。ただし、リスナーがオブジェクトのコンストラクター内にアタッチされているため、メソッドをスパイするまでには手遅れであり、未加工のスパイされていない関数は既に によって使用されてい$.proxyます。

これに取り組むための良いアプローチは何ですか? 私が検討したことの 1 つは、プロトタイプのメソッドを直接スパイすることですが、これが他のテストとは独立している各テストに与える影響について心配しています。もう 1 つの方法は、コードでリスナーをアタッチする方法を変更することですが、これは赤ちゃんを風呂の水で捨てるようなものです。

4

1 に答える 1

0

テストが開始される前に、オブジェクトのプロトタイプをスパイできます。したがって、他のテストに影響を与えることはありません。

var function A {
  $.proxy(this, 'methodName');
}

a.prototype.methodName = function() {
  console.log('test');
}

describe('…', function() {
  var a;
  before(function() {
    jasmine.spyOn(a.prototype, 'methodName');
    a = new A();
  });

  it('should…', function() { 

  });

});
于 2013-06-28T07:13:36.180 に答える