2017-01-03 6 views
2

私はこのように定義されているジャスミン内の関数をテストしようとしています:ジャスミンtypescriptです - LET項目対テストFUNCの問題= FUNC

let main = new function() { 
    this.addIframe =() => { 
     try { 
      $("body").append("<iframe id='myiframe'> </iframe>"); 
      return true; 
     } catch (err) { 
      dosomthing(); 
      return false; 
     } 
    }; 
}; 

私は後にスパイを設定するために定義のこのタイプを必要とし、テストスーツのようなもの。このコードを使用してリターンなステートメントをテストしようとすると、しかし、今問題に立ち往生イム:

describe("Function AddIframe",()=> { 
    it("should return true if opened iframe",()=>{ 
     expect(addIframe()).toBe(true); 
    }); 

問題は、私は2ステップ実行して、今私はそれが道のjs仕事becouseであることを理解し、未定義の取得で。

私はfunction(){}定義に移動しようとしましたが、他のテストではそれが必要です。 私はそれをオブジェクトの内部に置くという考え方をテストしますが、this.methodを使用していてもまだ定義されていません。

私はここに何が欠けているのか、私はこの問題を回避できるのか教えていただけますか?

+0

私は、これは誰にとっても参考になっだろうかどうかわからないのですが、どのような私のために、この問題を作ったと、その前にそこに確認してくださいということでした私がテストした機能のために既に定義されたスパイだった。だから、私はちょうどテストを動かした。最もスマートなソウルティションではなく、現在の問題を修正した。 –

答えて

0

メソッドaddIframeは、匿名コンストラクタ関数の新しいインスタンスを作成するため、mainオブジェクトに定義されています。だから、addIframe()の代わりにmain.addIframe()を使用する必要があります。

expect(main.addIframe()).toBe(true); 

をここで作業例です:http://jsfiddle.net/bBL9P/508/

関連する問題