0

私が勤務している会社では、多数の dijit ウィジェットで構成されるカスタム ライブラリを管理しています。

私が対処しなければならなかった欠陥/バグの多くは、やthis.inherited(arguments)などのオーバーライドされたメソッドからの呼び出しが失われた結果でした。destroy startuppostCreate

これらのいくつかは簡単に気付かれず、ずっと後になって初めて発見されるとは限りません。

dojo\aspect.after を使用して「ベース」実装にフックできると思いますが、_widgetBase メソッド自体へのハンドルを取得する方法がわかりません。

自分のウィジェットのメソッドで .after を使用するだけでは、実際にthis.inherited(..)呼び出されたかどうかがチェックされないため、無意味です。

dijit/_WidgetBase任意のインスタンスを渡すことができ、サブクラス化ウィジェット自体で同じメソッドが呼び出されたときに、上記の _widgetBase のメソッドがウィジェットから呼び出されるかどうかをチェックする一般的なテスト関数を作成するにはどうすればよいですか?

肝心なのは、上記の関数の基本実装への参照を取得するにはどうすればよいですか?

4

2 に答える 2

0

使うのを諦めましたdojo/aspect

代わりに、カスタム ベース ウィジェットのコードを変更して、以下のようなスニペットを組み込むことにしました。コンソール呼び出しとそのコンテンツが削除されるリリースビルドを作成すると、それらは自動的に削除されます。

console.log( 
        function(){
            (this._debugInfo = this._debugInfo|| {}).postCreate=true;
        }.call(this)  
    );

mycompany.widgets.basewidget単体テストの近くに追加したボイラープレート コードの単純なメソッドを使用できるので、それぞれの単体テストのすべてのインスタンスで呼び出すことができます。

于 2014-09-24T12:22:57.063 に答える