2016-07-12 3 views
1

ボタンを押したときにAPIから "hello world"という文字列を取得する瞬間にhello worldアプリケーションを作成しました。ユニットテストJasmine Typescript、分割の問題

私は単体テストの経験があり、問題を正しく分離しているかどうか疑問に思っていました。

私が行う上で計画してテストは以下のとおりです。ボタンのクリックは一度だけGETメソッドを呼び出すこと

  1. テスト。
  2. この関数が文字列hello worldを返すことをテストします。

だから私は持っている質問は以下のとおりです。

  1. は、関数が呼び出される回数を確認することが可能ですか?
  2. 機能が実装されているコントローラーは別ファイルのタイトスクリプトになっています。タイプコプターコントローラーの機能をテストする正しい方向を指示したり、TSにジャスミンテストを書き込む方法を教えてください。

おかげで、ジャスミン2.xで

答えて

0

回数関数は(これはもちろん、あなたが言った機能をスパイしていると仮定している)、このように呼ばれているチェックすることが可能である:

expect(myservice.someFunction.calls.count()).toBe(someNumber); 

TSでジャスミンテストを書くことはJSと非常によく似ています。私が経験した唯一の違いは構文だけです。あなたは今あなたの変数のための強力な型付けをするのではなく、それを行う代わりに、関数を使ってブロックを記述すると太い矢印の構文を使用します。だからではなく、

describe('Test', function() { 
    it('true is true', function() { 
     expect(true).toBe(true); 
    }) 
}) 

のあなたはここで私はTSで書いたテストの小さな不自然な例です。この

describe('Test',() => { 
    it('true is true',() => { 
     expect(true).toBe(true); 
    }) 
}) 

のようにテストを書きます。

namespace UserList.Services.Tests { 

describe("UserList: GetEntityTypeService",() => { 
    let service: UserList.Services.GetEntityTypeService; 

    beforeEach(() => { 
     angular.mock.module("App.UserList.Module"); 

     angular.mock.module(($provide: angular.auto.IProvideService) => { 
      $provide.service("UserList.Services.GetEntityTypeService", UserList.Services.GetEntityTypeService); 
     }); 

     inject(($injector: angular.auto.IInjectorService) => { 
      service = <UserList.Services.GeteEntityTypeService>($injector.get("UserList.Services.GetEntityTypeService")); 
     }); 
    }); 

    it("should be defined",() => { 
     expect(service).toBeDefined(); 
    }); 
}); 

}

は、TSは、JSのスーパーセットで覚えておいてください。したがって、有効なJSは有効なTSです。もしあなたが本当にやりたいと思っていれば、あなたは普通のJSでテストを書くことができます。

懸念を分けることについてのご質問は、あなたが正しい方向にいると思います。ここに私が従うパターンがとてもうまくいきます。

  • オブジェクトをタイプと名前で記述します。
  • オブジェクトのモジュールをロードします。
  • モックモジュールを必要に応じてロードします。
  • メソッドに依存性とスパイを注入します。
  • オブジェクトを初期化する:
    • サービスは注入する必要があります。
    • コントローラは、$ controllerサービスを使用してインスタンス化されます。
    • ディレクティブを$コンパイルする必要があります。
  • 記述ブロックにグループ化された期待値を書き込みます。

サービス、イベント、期待される結果に対する状態同期、非同期呼び出し、および必要に応じて期待される結果をテストします。

+0

本当にありがとうございます。 – SwimmingG

関連する問題