2016-09-12 5 views
1

私のコントローラでは、条件に基づいて変数に空の関数を割り当てるステートメントがあります。Jasmine:変数が空の関数かどうかを確認します

var vm = this; 
vm.emptyFunction = angular.isFunction(callback) ? callback : function() {}; 

どのように私はこのvm.emptyFunctionが実際に空の関数であることをテストすることができますか?動作しませんでした

もの:

expect(vm.emptyFunction).toEqual(jasmine.any(Function)); 

しかし、これは任意の関数定義のための有効な取得します:仕事がある

expect(vm.emptyFunction).toEqual({}); 
expect(vm.emptyFunction()).toEqual({}); 
expect(vm.emptyFunction).toEqual(() => {}); //using typescript 

シング。

+1

なぜあなたはこのような場合のためにテストしたいのでしょうか? 'emptyFunction'を外部から定義できますか?それが空の関数なら、これはエラーでしょうか?この関数はデフォルトでは空であり、テスト中のモジュールの初期化されていない属性をテストするために適切な関数を割り当てる必要がありますか? –

+0

ここで 'callback'がコントローラに注入されています。未定義の 'callback'を渡すかどうかをテストする必要があります。' vm.emptyFunction'は 'callback'ではなく空の関数です。 –

+0

そして、前者の場合には 'function'型のテストを行い、コールバックが呼び出されたかどうかをテストすることが必要です。 –

答えて

0

私が考えることができるのは、同じ空の関数に同じ参照を使用することだけです。

var emptyFunction = function {}; 

してから使用し

vm.emptyFunction = angular.isFunction(callback) ? callback : emptyFunction; 

その後、テスト

expect(vm.emptyFunction).toEqual(emptyFunction); 
+0

その場合、私は外部から 'emptyFunction'の参照を渡す必要があります。ここで 'callback'がコントローラに注入されます。 'callback'を未定義として渡すかどうかを確認する必要があります。' vm.emptyFunction'は 'callback'ではなく空の関数でなければなりません。 –

関連する問題